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)。このフィルタは、このグループ内の行の合計がOtherValue0 より大きいグループのみを返します。
最後に、フィルタリングされたグループから、各グループのキーを選択します。グループのキーは、 で指定された値ですGroupBy

于 2013-03-20T21:25:03.787 に答える
1

グループ化を機能させるには、次のようにします (ラムダではなくクエリ構文で)。

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 に答える