2011-12-15 18 views
21

Tengo un ListCollectionView al que se le ha aplicado un filtro. Para poder obtener los elementos filtrados de la lista (por ejemplo, para escribir en un archivo), ¿hay una forma clara de hacerlo?Obtener elementos filtrados de un CollectionView

Mi solución actual es

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

En el código que debe verificar si los nulos en originalCollection y view.Filter.

¿Hay alguna manera más clara de hacerlo?

+0

'var = filteredItems originalCollection.FindAll (view.Filter);' también funciona –

Respuesta

36

El método GetEnumerator toma el filtro en cuenta, lo que sólo puede foreach sobre la vista:

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

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

(suponiendo que los objetos en la colección original son de tipo Foo).

También puede utilizar el método Cast extensión:

var filteredItems = view.Cast<Foo>(); 
Cuestiones relacionadas