【发布时间】:2022-01-17 20:09:33
【问题描述】:
我在 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(y => y.Id == x.CorrelationId)而不是Contains -
那行得通。我花了太长时间查看查询的错误部分。如果您将回复添加为答案,我会接受。非常感谢。
标签: tsql entity-framework-core linq-to-sql