【问题标题】:How convert this SQL query to linq?如何将此 SQL 查询转换为 linq?
【发布时间】:2022-01-22 02:51:27
【问题描述】:

我有这个 SQL 查询,我想将它转换为 linq:

SELECT
    SUM(CASE WHEN AsiDurumu = 1 THEN 1.0 ELSE 0.0 END) / MAX(CovidId) 
FROM Covids

【问题讨论】:

  • 到目前为止您尝试过什么?你知道GroupBy(x => 1) by constant 可以让你在一个表达式中使用两个聚合吗?
  • 我不能尝试,因为它对我来说太难了所以我在stackoverflow上写了
  • 一个好的开始是找到一个支持 LINQ 的 O/R 映射器。

标签: sql linq


【解决方案1】:

如果您在一个非分组 LINQ 查询中需要多个聚合表达式,则应按常量分组。 EF 对这种情况有专门的翻译。

var query = 
    from c in ctx.Covids
    group c by 1 into g
    select new 
    {
        Some = g.Sum(x => x.AsiDurumu == "1" ? 1 : 0) / g.Max(x => x.CovidId)
    };

【讨论】:

  • 我在 x.AsiDurumu 中遇到错误,无法将类型隐式转换为“字符串”到“布尔”
  • 这很酷。哪一个?如果您无法表达自己的想法,请使用谷歌翻译
  • (x.AsiDurumu ? 1 : 0) 错误名称是无法将类型隐式转换为“字符串”到“布尔”
  • 更正答案。那是因为你忘了发布你的模型。无论如何,一切都是常识,您可以自己解决。
  • 你能看看这是我的问题吗?请stackoverflow.com/questions/70479655/…
猜你喜欢
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
相关资源
最近更新 更多