web-dev-qa-db-ja.com

CollectionViewからフィルタリングされたアイテムを取得します

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

私の現在の解決策は

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

コードでは、originalCollectionview.Filterのnullをチェックします。

これを行うためのよりクリーンな方法はありますか?

28
John Oxley

GetEnumeratorメソッドはフィルターを考慮に入れるため、ビューをforeachするだけで済みます。

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

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

(元のコレクションのオブジェクトのタイプがFooであると想定)。

Cast拡張メソッドを使用することもできます。

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