2011-12-15 10 views
21

ListCollectionViewにはフィルタが適用されています。フィルタリングされたアイテムをリストから取得する(たとえば、ファイルに書き込む)ために、それを行うためのきれいな方法があります。CollectionViewからフィルタリングされた項目を取得

私の現在のソリューションは、私がoriginalCollectionview.Filterにヌルをチェックしないコードで

var filteredItems = originalCollection.Where(i => view.Filter(i)); 

です。

これを行うクリーナーの方法はありますか?

+0

' VAR filteredItems = originalCollection.FindAll(view.Filterが):

またCast拡張メソッドを使用することができます –

答えて

36

GetEnumerator方法が考慮にフィルタを取るので、あなただけのforeachビュー以上を行うことができます

ICollectionView view = ... 
view.Filter = ... 

foreach(Foo o in view) 
{ 
    ... 
} 

(元のコレクション内のオブジェクトの型Fooであると仮定した場合)。 `も動作します。

var filteredItems = view.Cast<Foo>();