I have a ListCollectionView
which has had a filter applied to it. In order to get the filtered items from the list (e.g. to write to a file), is there a clean way of doing it.
My current solution is
var filteredItems = originalCollection.Where(i => view.Filter(i));
In the code I do check for nulls on originalCollection
and view.Filter
.
Is there a cleaner way of doing this?
The GetEnumerator
method takes the filter into account, so you can just foreach
over the view:
ICollectionView view = ...
view.Filter = ...
foreach(Foo o in view)
{
...
}
(assuming the objects in the original collection are of type Foo
).
You can also use the Cast
extension method:
var filteredItems = view.Cast<Foo>();