0


0

最大値を持つすべての行を返します

エンティティフレームワークを使用してデータベースに接続しています。

いくつかのフィールドを持つテーブル(「ファイル」と呼びましょう)があります。

ID、バージョン、XYZ PrimarkyキーはIDとバージョンに基づいています。 そのため、同じIDでバージョンが異なる(逆の)複数の行を持つことができます。

質問は:

LAMBDA式を使用して、Entity Frameworkに「ファイル」のすべての最新バージョンを返すように依頼するにはどうすればよいですか。

例:データ:

 ID;Version;Other
 1;1;YX
 1;2;YZ
 2;1;AH
 2;2;BH
 2;5;CA
 1;3;AAA

結果:

 1;3;AAA
 2;5;CA

ありがとうございました!

!! 目標は、データベースがすべての行を返す必要がなく、一度だけ呼び出されることです。そのため、GetAllRowsのようなソリューションを忘れてコレクション全体を読み取り、最新のみを保存するか、可能なすべてのIDのリストを取得して最後を取得します別のリクエストのバージョンforeach。 ありがとうございます。

1 Answer


1


これには、次のLinqToEntitesクエリを使用できます。

var result = from f in myEntities.Files
             group f by f.ID into g
             select g.OrderByDescending(f => f.Version).FirstOrDefault();

FirstOrDefault`の代わりに First`を使用する方がより意味があるかもしれませんが、それから `UnsupportedException`を受け取ります:

_ メソッド 'First’は、最終クエリ操作としてのみ使用できます。 代わりに、このインスタンスでメソッド「FirstOrDefault」を使用することを検討してください _