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

Group By and Count query fails to translate from Linq to SQL

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

我的 table 有一个 CorrelationId,它仅对相关记录具有相同的值。我需要创建一个查询,其中 returns CorrelationId 只存在一次的记录。如果 CorrelationId 出现不止一次,则表示存在相关记录,应返回其中 none 个。查询必须 运行 在服务器上,因此无法撤回所有数据。

这是我的 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)