1

計算された値を含むエンティティのリストを返すための Entity Framework のグッド プラクティス/パターンは何ですか?

詳細には、私の DAL には、エンティティのリストを返す関数があります。

Return (From msg In context.Messages
         Where (msg.UserCreation.Equals(From, StringComparison.OrdinalIgnoreCase))).ToList()

これは正常に機能し、List (Of Message) を返します。メッセージは、SQL Server のテーブルに対応するエンティティです。次に、このクエリを変更して、「メッセージ」ごとにカウントを含めることができるようにする必要があります。各メッセージの受信者数を知りたい。

Return (From msg In context.Messages
         Let countRecipient as integer = context.MessageRecipientJeu.Count(Function(x) x.Message.UserCreation.Equals(From, StringComparison.OrdinalIgnoreCase))
         Where (msg.UserCreation.Equals(From, StringComparison.OrdinalIgnoreCase))).ToList()

これは匿名型を返すため、エラーが発生します。

私が持っている最善の解決策は何ですか?

エンティティ モデル (edmx ファイル) でユーザー カスタム型を定義する必要がありますか? カウントを含み、この関数にのみ使用される独自のエンティティ メッセージを定義する必要がありますか? 他に何か?

それが十分に明確であることを願っています。ご協力いただきありがとうございます。

4

1 に答える 1

0

MSDN 101 LINQ のサンプル ページをお勧めします 。非常に多くの例があります。いくつかをクリックするだけで、いくつかの良い例が得られるはずです。

たとえば、ここにWhereのページがあります: http://msdn.microsoft.com/en-us/bb737944

そして、いくつかのIFについてはこちら:http://msdn.microsoft.com/en-us/bb737907

アップデート

デフォルトの構造に従います (ほぼすべての例で使用されているため)。

  1. クエリを定義します (LINQ をその変数に割り当てます。型を定義したり、 As System.Collections.IEnumerableを使用したりしないでください) 。
  2. For-Each ループを使用して各結果を処理します。ここで、必要な変数の型をキャストして埋めることができます。

For Each を使用することは非常に一般的であるため、これがベスト プラクティスであると想定しています。

また、カウントに整数を自動的に追加するものを見つけたいと思っていました(linqにそのようなものがあると思います)。それが最善の解決策ですが、例では今のところ見つけることができませんでした。

于 2013-04-09T21:15:28.503 に答える