Group By和Count查询无法从Linq转换为SQL



我已经在LINQPad中创建了如下所示的linq查询。使用EF Core 3.0时会失败。我知道Group By的问题,以及EF Core在无法进行翻译时失败的原因,而不是撤回所有数据并在客户端进行翻译。我的问题是,到目前为止,我还没有弄清楚是否可以执行我想执行的操作来运行我的查询。

我的表具有CorrelationId,该值仅与相关记录的值相同。我需要创建一个查询,它只返回CorrelationId只存在一次的记录。如果CorrelationId出现不止一次,则表明存在相关记录,并且不应返回这些记录。查询必须在服务器上运行,因此不能提取所有数据。

这是我的Linq查询,它以";。。。无法翻译。要么用可翻译的形式重写查询"错误

from x in History
where
(
from d in History
group d by new {d.CorrelationId} into g
where g.Count() == 1
select new {Id = g.Key.CorrelationId}
).Contains(new { Id = x.CorrelationId })
select new {Id = x.Id, FileName = x.FileName}

尝试使用Any而不是Contains

.Any(y => y.Id == x.CorrelationId)

最新更新