2011-12-15 18 views
21

Ho un ListCollectionView a cui è stato applicato un filtro. Per ottenere gli elementi filtrati dall'elenco (ad esempio, per scrivere in un file), esiste un modo pulito per farlo.Ottieni elementi filtrati da una collezioneView

mia soluzione attuale è

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

Nel codice faccio verificare la presenza di valori null su originalCollection e view.Filter.

C'è un modo più pulito per fare ciò?

+0

'var = filteredItems originalCollection.FindAll (view.Filter);' funziona anche –

risposta

36

Il metodo GetEnumerator prende il filtro in considerazione, quindi si può foreach sopra la vista:

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

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

(assumendo gli oggetti della collezione originale sono di tipo Foo).

È inoltre possibile utilizzare il metodo Cast estensione:

var filteredItems = view.Cast<Foo>(); 
Problemi correlati