【问题标题】:Group By and Count query fails to translate from Linq to SQLGroup By and Count 查询无法从 Linq 转换为 SQL
【发布时间】: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


【解决方案1】:

尝试使用Any 而不是Contains

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多