gpt4 book ai didi

linq - 在一个 LINQ 查询中获取两列的总和而不进行分组

转载 作者:行者123 更新时间:2023-12-04 02:05:50 27 4
gpt4 key购买 nike

我想在一个查询中总结一个表的三个不同字段。我想要一个相当于这个 T-SQL 的 linq:

select sum(fld1), SUM(fld2),  SUM(fld3)   from MyTable where classID = 5

我发现的所有示例都使用 group by 或多次调用查询,每个需要汇总的字段一次。

我现在有这样的事情。但是我不想向它添加 group by 子句,因为它的 T-SQL 形式不需要它。
from a in MyTable
where a.classID == 5
group a by a.classID into g
select new
{
Sumfld1 = g.Sum(x => x.fld1 ),
Sumfld2 = g.Sum(x => x.fld2),
Sumfld3 = g.Sum(x => x.fld3)
}

有什么建议吗?谢谢你的时间。

最佳答案

事实证明,在 linq-to-sql 中,您可以通过执行以下操作来非常接近:

from a in MyTable
where a.classID == 5
group a by 0 into g
select new
{
Sumfld1 = g.Sum(x => x.fld1),
Sumfld2 = g.Sum(x => x.fld2),
Sumfld3 = g.Sum(x => x.fld3)
}

(注意由 0 组成的组)

它不会转换为 sql GROUP BY ,但是一个 SELECT多个 SUM s 来自子查询。在执行计划方面,它甚至可能是相同的。

Entity Framework 仍然创建一个 GROUP BY ,尽管来自 0 .

关于linq - 在一个 LINQ 查询中获取两列的总和而不进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10239987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com