从CollectionView获取过滤的项目

时间:2011-12-15 11:02:34

标签: c# .net wpf collectionview

我有ListCollectionView已应用过滤器。为了从列表中获取过滤的项目(例如写入文件),是否有一种干净的方法。

我目前的解决方案是

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

在代码中,我会检查originalCollectionview.Filter上的空值。

有更清洁的方法吗?

2 个答案:

答案 0 :(得分:43)

GetEnumerator方法会考虑过滤器,因此您只需foreach视图:

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

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

(假设原始集合中的对象属于Foo)。

您还可以使用Cast扩展方法:

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

答案 1 :(得分:0)

以下是如何从 DataGrid 获取过滤项目的完整示例:

ICollectionView view = CollectionViewSource.GetDefaultView(*yourDataGrid*);
foreach(Foo o in view)
{
  ...
}
相关问题