gpt4 book ai didi

c# - 使用 SUM() 将 SQL 语句转换为 Linq/Entity Framework

转载 作者:太空宇宙 更新时间:2023-11-03 19:20:09 28 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 Linq 将以下 SQL 语句转换为 Entity Framework :

SELECT SUM(Column1) AS Correct
, SUM(Column2) AS Incorrect
, UserName
FROM Stats
WHERE (StatType = 0)
GROUP BY UserName
ORDER BY UserName

为了这个问题的目的,DB中的所有列类型都是INT类型,并且每个用户有多行数据。我的输出基本上需要 3 列,每个用户的正确和错误选择总数。

这似乎是一个非常简单的 SQL 语句,但无论我在 LinqPad 之类的东西中尝试什么,我总是会出错。我一定是遗漏了一些相对简单的东西。一旦我开始添加“.Sum”子句,我就会遇到编译错误等。

Stats.Where(s => s.StatType == 0)
.GroupBy(s => s.UserName)
.Select(x => new { Correct = x.Column1
, Incorrect = x.Column2
, User=x.UserName})
.ToList()

最佳答案

以下应该可以解决问题:

Stats.Where(s => s.StatType == 0)
.GroupBy(s => s.UserName)
.Select(x => new { Correct = x.Sum(y => y.Column1),
Incorrect = x.Sum(y => y.Column2),
User = x.Key})
.ToList();

请注意GroupBy返回 IEnumerable<IGrouping<TKey, TValues>> .
这意味着 xSelect里面是一个 IGrouping<TKey, TValues> .这反过来基本上只是一个 IEnumerable<T>包含该组的所有行以及该组的键。
因此,要获得一组中所有项目的总和,您需要使用 Sum在分组上并指定将哪些列作为参数求和到 Sum方法。

关于c# - 使用 SUM() 将 SQL 语句转换为 Linq/Entity Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019618/

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