Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从CollectionView获取筛选的项目_C#_.net_Wpf_Collectionview - Fatal编程技术网

C# 从CollectionView获取筛选的项目

C# 从CollectionView获取筛选的项目,c#,.net,wpf,collectionview,C#,.net,Wpf,Collectionview,我有一个ListCollectionView,它应用了一个过滤器。为了从列表中获取过滤项(例如写入文件),是否有一种干净的方法 我目前的解决办法是 var filteredItems = originalCollection.Where(i => view.Filter(i)); 在代码中,我检查originalCollection和view.Filter上是否有空值 有更干净的方法吗?GetEnumerator方法考虑了过滤器,因此您可以在视图上使用foreach: ICollecti

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

我目前的解决办法是

var filteredItems = originalCollection.Where(i => view.Filter(i));
在代码中,我检查
originalCollection
view.Filter
上是否有空值


有更干净的方法吗?

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

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

foreach(Foo o in view)
{
    ...
}
(假设原始集合中的对象类型为
Foo

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

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

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

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

var filteredItems=originalCollection.FindAll(view.Filter)同时工作ICollectionView=。。。请给出一个完整的例子。我已经过滤了DataGrid中的项目以及从GetDefualtView获得的视图如何获得“CurrentView”?