2

我是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();

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

4

2 回答 2

4

等效的 LINQ 语句如下所示:

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

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

于 2013-03-20T21:25:03.787 回答
1

为了让分组工作看起来你想要这个(在查询语法而不是 lambdas 中):

from entry in SomeTable
group entry by entry.SomeValue into grp
where grp.Sum(x => x.OtherValue) > 0
select grp.Key;
于 2013-03-20T21:28:48.887 回答