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。ありがとう!

4

1 に答える 1

1

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

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

First代わりに使用する方がおそらく理にかなってFirstOrDefaultいますが、次のようになりますUnsupportedException

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

于 2010-09-09T09:02:55.303 に答える