0

dbContextに対してLinqを使用して、子オブジェクトの子オブジェクトのコレクションが特に高い値を持つオブジェクトのカウントを取得するのに問題があります。

私はクラスRequest、Event、Userを持っています。私の簡略化されたオブジェクトグラフは次のようになります:-

Request                        Event                  User
  |                             |                      |-> Username
  |-> EventsCollection          |-> Description
  |-> User                      |-> WhenDone

ドメインモデルは変更できると確信していますが、現在の構造を使用すると、最新のイベントに特定の説明がある特定のユーザーによるリクエストの数が必要になります。

私は当初、次のようなものが私が探している価値を私に与えるだろうと思っていました

value = _db.Requests.Where(r => r.User.UserName.Equals("username") &&  r.Events.OrderByDescending(e => e.WhenDone).First().Description.Equals( "description")).Count();

ただし、これを実行すると、「First」というエラーが発生します。これを変更する最後のクエリ操作としてのみ使用できます。サポートされていないメソッドなどの他のエラーが発生します。

サブクエリを使用する必要があると思いますが、構文を正しく取得できませんでした。

有用な情報源または提案された解決策へのポインタは非常に高く評価されます

4

1 に答える 1

1

次のようなものを試してください。

int count = _db.Requests.Where(r => r.User.UserName == "username")
               .Select(r => 
                   r.Events.OrderByDescending(e => e.WhenDone).FirstOrDefault())
               .Count(r => r != null && r.Description == "description");
于 2013-02-23T18:06:00.857 に答える