从CollectionView获取过滤的项目

Joh*_*ley 27 .net c# wpf collectionview

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

我目前的解决方案是

var filteredItems = originalCollection.Where(i => view.Filter(i));
Run Code Online (Sandbox Code Playgroud)

在代码中我也检查了null originalCollectionview.Filter.

这样做有更干净的方法吗?

Tho*_*que 44

GetEnumerator方法考虑了过滤器,因此您可以foreach在视图上方:

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

foreach(Foo o in view)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

(假设原始集合中的对象属于类型Foo).

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

var filteredItems = view.Cast<Foo>();
Run Code Online (Sandbox Code Playgroud)