2016-08-25 5 views
1

私は親エンティティと各親エンティティのコレクションを持っていますPには子エンティティCが含まれています。厳密に型付けされた結果のフィルタリング

は、私は強くコレクション/任意の子供の名前であるすべての親エンティティのリストを入力しをフィルタリングしたい "ピーター

私は結果に強く種類のリストが必要です注意してください。

List<P> parents = (List<P>)db.Ps.Select(a => a.Cs.Any(b => b.Name == "Peter")).ToList(); 

このコードは、私の必要ではないIEnumerableを返しています。 注:このシナリオとコードは学習目的の例に過ぎません

答えて

3

親エンティティのフィルタリングされたリストが必要なので、Selectの代わりにWhereを使用する必要があります。

var res = db.Ps.Where(a => a.CS.Name == "Peter").ToList(); 

をそれとも、1-manyを持っている場合:

var res = db.Ps.Where(a => a.CS.Any(b => b.Name == "Peter")).ToList(); 

resあなたPsクラスの一覧ですこれは、あなたが望むものでなければなりません。

+0

OPは「Cs」は実際には子エンティティ(たぶん1-many)であると言っているので、ここでは「Any」の使用が有効です。 – sallushan

+0

@sallushanあなたが言ったように、おそらく* 1 - many *または1-1になる可能性があります。しかし、もしそれが1であれば、「Any」を使うこともできます。ところで、答えの要点は 'Select'の代わりに' Where'を使ってシーケンスをフィルタリングすることです。 –

+0

はい、あなたは答えを変える必要があります、あなたは_また何も使えないと言っていますhere_ – sallushan

関連する問題