我是 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/