Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get filtered items from a CollectionView

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?

like image 590
John Oxley Avatar asked Dec 15 '11 11:12

John Oxley


1 Answers

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>(); 
like image 81
Thomas Levesque Avatar answered Sep 22 '22 21:09

Thomas Levesque