2011-12-15 107 views
21

我有一個ListCollectionView已應用過濾器。爲了從列表中獲得已過濾的項目(例如,寫入文件),是否有乾淨的方式來完成它。從一個CollectionView獲取過濾項目

我目前的解決方案是

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

在代碼我檢查空值上originalCollectionview.Filter

是否有這樣做的更清潔的方式?

+0

`VAR filteredItems = originalCollection.FindAll(view.Filter);`也適用 – 2011-12-15 11:09:06

回答

36

GetEnumerator該方法採用濾波器考慮進去,這樣可以只是foreach在視圖:

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

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

(假設原始集合中的對象的類型是Foo的)。

您還可以使用Cast擴展方法:

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