LINQ を使用してクエリを実行したい SQL Server に格納されたテーブルがあります。テーブルのあいまいな説明:
ID1 | ID2 | SomeData
-----------------------------
1 | 1 | 'Moo'
1 | 2 | 'Meow'
1 | 3 | 'Woof'
1 | 4 | 'Cheap'
2 | 1 | 'Quack'
2 | 2 | 'Grrrrr'
2 | 3 | 'Wan wan'
望ましい結果の例ID2
ごとに最大の値である行にのみ関心があります。ID1
1 | 4 | 'Cheap'
2 | 3 | 'Wan wan'
私はこのSQLコードを思いつきました:
SELECT *
FROM SomeTable a
INNER JOIN
(
SELECT ID1, MAX(ID2) as SomeName
FROM SomeTable
GROUP BY ID1
) as b
ON a.ID1 = b.ID1 and a.ID2 = b.SomeName
LINQ で実装する場合、サブクエリも必要ですか? つまり、データベースにクエリを実行し、「内部クエリ」の結果を変数にロードしてから、同じテーブルをクエリしますが、「内部クエリ」の値と比較しますか? しばらくこれをいじれば、最終的には手に入ると思いますが、LINQでこれを非常に簡単に行うための素晴らしい方法がおそらくあると思います。
望ましい答えは、拡張メソッド構文を利用します。
おまけ: 標準の LINQ 構文から拡張メソッド構文へのコンバーターはありますか? 皆さんは、LINQ ステートメントを操作するためにどのツールを使用していますか? LINQ クエリを操作するために c# 全体 (私にとっては ASP.NET MVC) を必要とするのは少し面倒に思えます。