フィルタが適用されたListCollectionView
があります。リストからフィルタリングされたアイテムを取得するために(たとえば、ファイルに書き込むために)、それを行うためのクリーンな方法がありますか?.
私の現在の解決策は
var filteredItems = originalCollection.Where(i => view.Filter(i));
コードでは、originalCollection
とview.Filter
のnullをチェックします。
これを行うためのよりクリーンな方法はありますか?
GetEnumerator
メソッドはフィルターを考慮に入れるため、ビューをforeach
するだけで済みます。
ICollectionView view = ...
view.Filter = ...
foreach(Foo o in view)
{
...
}
(元のコレクションのオブジェクトのタイプがFoo
であると想定)。
Cast
拡張メソッドを使用することもできます。
var filteredItems = view.Cast<Foo>();