0

DB:

ここに画像の説明を入力

AllReviewItems が ReviewItemStatus==3 の条件を満たしている場合にのみ、データを取り戻そうとしています。これは機能します。

All問題: しかし、ReviewerID==1000 のすべての ReviewItems にスコープを絞り込みたい

 // I want ALL groupAccountLinks only for ReviewerID==1000 and AccountID
// 0)  (and thus ReviewItems) for Account Charlie have ReviewItemStatusID==3
var xx = Accounts.Where(acc => acc.GroupAccountLinks.All(gal => 
                        // do ANY of the (1) associated reviewItems contain ri.ReviewItemStatusID == 3
                        gal.ReviewItems.Any(ri => ri.ReviewItemStatusID == 3)
                        // This doesn't work
                        //&& ri.Review.ReviewerID == 1000
                     )
&& acc.AccountID == 1002 // Charlie

);

EF4.1 に反対します。現在、Linqpad と LinqToSQL テスト データベースを使用してテストしています。

4

3 に答える 3

0

私が最初に行うことは、オフにして、フィルター処理されていないステータス 3の&& acc.AccountID == 1002セット全体を取得していることを確認することです。AccountsReviewItem

        var xx = Accounts
                  .Where(acc => acc.GroupAccountLinks
                                   .All(gal => gal.ReviewItems
                                          .Any(ri => ri.ReviewItemStatusID == 3))
                         .FirstOrDefault(acc => acc.AccountID == 1002);
于 2013-05-23T16:54:19.843 に答える
0

あなたは && Condition を持っています。だから、あなたのテーブルには all AccountId=1002 と All ReviewItemStatusID=3 がないと思います。&& 条件を || に変更します。調子。

于 2013-05-23T16:45:23.073 に答える