2017-06-19 18 views
0

異なるタイプを含むコレクションがあります。オブジェクトのタイプが 'A'の場合、そのオブジェクトを返すだけですが、オブジェクトのタイプが 'B'の場合は、特定の条件を満たす場合のみ返すようにします(タイプが無効な場合Aとそれをチェックしようとすると例外がスローされます)。ような何か:指定された条件を満たす指定されたタイプのアイテムのみをフィルタリングするC#linqクエリ

model.MyList = model.MyList.Where(d => d.GetType().Equals(typeof(MyTypeB)) ? !d.IsSomeCondition: d); 
+0

は、タイプAとタイプBは同じクラスまたはインタフェースを継承? –

答えて

1

はただ単にこれだけのフィルタリング真または偽の応答を必要としている

d => d.GetType().Equals(typeof(MyTypeB)) ? !d.IsSomeCondition: true 

trueを返します。このような

1

何か:

.Where(d => d is MyTypeA || (d is MyTypeB && !(d as MyTypeB).IsSomeCondition))); 
関連する問題