0

以下のコードでは、最初の LINQ ステートメントがすべてのアクティブな顧客 (c) を取得し、その訪問を含めます。後続の行は追加のフィルタリングを実行しますが、この質問には関係ありません。

最後の行では、顧客を Visit.Id が等しい顧客に限定しようとしていますが、parsedVisitIdこの行をまったく機能させることができません。コンパイルさえできるものをまとめることができません。parsedVisitId文字列から解析された int です。

parsedVisitId と等しい訪問 ID を持つ顧客のみを返すように最後の行を書き直すにはどうすればよいですか?

var customers= this.db.Customers.Where(c => c.IsActive).Include(c => c.Visits).AsQueryable();
//
// more filtering stuff happens here...
//
customers= customers.Where(p => p.Visits.Where( v => v.Id == parsedVisitId));
4

1 に答える 1

0
customers = customers.Where(p => p.Visits.Any( v => v.Id == parsedVisitId));

WhereonVisitsの代わりにAnyを使用してください。上記のコード行がお役に立てば幸いです。

あなたのコードで

Customers = Customers.Where(p => p.Visits.Where(v => v.Id == parsedVisitId));

Customers.Where(...)メソッドは、Customer型とReturnType bool型のパラメーターを持つラムダ式を想定していますが、ラムダ式は

p.Visits.Where(v => v.Id == parsedVisitId)

タイプのリターン

IEnumerable<Visit>

したがって、機能しません。どうやってコンパイルするのかしら。

于 2012-07-16T16:49:48.880 に答える