c# - 对如何在 LINQ 中进行 Group by 非常困惑,对 HAVING 更困惑

标签 c# sql linq

我是 Linq 新手。我正在尝试转换这个简单的 SQL 查询,但找不到任何有关如何将 SQL 转换为 LINQ 的优秀资源。我的 SQL 查询是:

SELECT SomeValue
FROM SomeTable
GROUP BY SomeValue
HAVING SUM (OtherValue) > 0;

我不太了解 LINQ,无法做到这一点。我在让 GROUP BY 工作时遇到了很多麻烦,我什至还没有尝试解决 HAVING SUM 问题。

我尝试了一些方法。这是最新的,尽管它仍然是非常错误的:

from entry in SomeTable
group entry by entry.SomeValue into grp
select grp.Select(x => x.SomeValue).toList();

任何帮助或资源都会很棒。

最佳答案

等效的 LINQ 语句如下所示:

SomeTable.GroupBy(x => x.SomeValue)
         .Where(g => g.Sum(x => x.OtherValue) > 0)
         .Select(g => g.Key);

它首先按SomeValue分组。结果将是一个组列表。每个组依次包含具有相同 SomeValue 的所有行。
下一步创建一个过滤器(Where)。此过滤器将仅返回该组中行的 OtherValue 总和大于零的组。
最后,它将从过滤的组中选择每个组的 key 。组的键是在GroupBy中指定的值。

关于c# - 对如何在 LINQ 中进行 Group by 非常困惑,对 HAVING 更困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15534974/

相关文章:

c# - MySql 在 Visual Studio 2012 中不起作用 : The type or namespace name 'MySql' could not be found

c# - 如何使用 serilog 通过身份验证在 kibana 中将日志设置为 ELK

sql - 如何从 SQL 中的两个表创建矩阵?

c# - 在 LINQ 中并行加载图像

c# - MongoDB C# 驱动程序 : Using Linq to get Guid returns nothing

c# - 拆分字符串并转换为自定义类型

c# - 寻找替代 for 循环的 linq 解决方案

c# - C# 中的组合生成器

sql - 将 AUTO INCREMENT 列添加到 Sqlite View

mysql - 如何从给定的表中删除那些教师工资低于相应部门平均工资的元组?