我可以将过滤后的 CollectionViewSource 传递给方法吗?

Can I pass a filtered CollectionViewSource to a method?

我创建了一个 public CollectionView (cvs) 并将其绑定到 WPF 应用程序中的 ListView 控件。然后有一系列过滤器添加委托来过滤我的 cvs 对象。程序的这方面一切正常。

public ICollectionView cvs { get; set; }
public ObservableCollection<T> TLIST
...
cvs = CollectionViewSource.GetDefaultView(TLIST);
ListViewName.ItemsSource = cvs;
...
//Filters created 
cvs.Filter = groupFilter.Filter;

我想做的是为列表中的项目创建 Excel 文件。我可以将整个集合 (TLIST) 发送到 OpenXML 函数并创建我的文件就好了。我挣扎的地方是我只想将过滤后的项目发送到函数中,并且我需要以某种方式发送过滤后的 cvs。

简而言之,我想要得到的是 --> cvs.ToList() 但这不是一个有效的操作。并收到错误

"Unable to cast object of type 'System.Windows.Data.ListCollectionView' to type 'System.Collections.Generic.List`1"

有什么明显的地方我做错了吗?任何指导表示赞赏。

注意:即使我检查 cvs,它也会显示所有项目,而不仅仅是筛选的项目。

您可以尝试下面的过滤列表。

List<MyObject> lst = cvs.Cast<MyObject>().ToList();