29

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

私の現在の解決策は

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

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

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

4

2 に答える 2

49

このGetEnumeratorメソッドはフィルターを考慮に入れるのでforeach、ビューのすぐ上に置くことができます。

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

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

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

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

var filteredItems = view.Cast<Foo>();
于 2011-12-15T11:20:18.680 に答える
0

DataGridからフィルタリングされたアイテムを取得する方法の完全な例を次に示します。

ICollectionView view = CollectionViewSource.GetDefaultView(*yourDataGrid*);
foreach(Foo o in view)
{
  ...
}
于 2021-02-06T18:24:40.140 に答える