C# 如何对可观察集合进行排序/筛选并返回不可观察集合

C# 如何对可观察集合进行排序/筛选并返回不可观察集合,c#,collections,C#,Collections,有人能告诉我哪种方法是对可观察集合进行排序/筛选并返回不可观察集合的最佳方法吗?可能对于排序,您可以将其转换为列表,然后调用sort(),提供一个比较委托。比如:- my_collection.ToList().Sort((左、右)=>left==right?0:(左>右?-1:1)) 如果排序/筛选的结果是IEnumerable,那么您可以创建另一个ObservableCollection,并将结果作为参数传递给构造函数 您可以查看myObservableView实现,它包装了一个可观察的集合

有人能告诉我哪种方法是对可观察集合进行排序/筛选并返回不可观察集合的最佳方法吗?

可能对于排序,您可以将其转换为列表,然后调用sort(),提供一个比较委托。比如:-


my_collection.ToList().Sort((左、右)=>left==right?0:(左>右?-1:1))

如果排序/筛选的结果是
IEnumerable
,那么您可以创建另一个
ObservableCollection
,并将结果作为参数传递给构造函数


您可以查看my
ObservableView
实现,它包装了一个可观察的集合(或其他列表),并提供“实时”排序和筛选:


那么,你现在是如何对可观察到的集合进行排序的?@BoltClock:我现在没有排序,因为我对它不太了解。我找到OrderBy()方法,但它返回IEnumerable。@理查德:他可能在谈论ObservableCollection。@UpendraChaudhari:我假设这是关于
ObservableCollection
。您是希望对集合本身进行排序,还是希望对视图进行排序(假设集合连接到视图)?我需要集合本身,因为我在其上实现了notify事件处理程序。我需要ObservableCollection作为回报,而不是List。但在该示例中,它创建了新的ObservableCollection,如果通过这种方式分配集合,则绑定源将不会触发notify事件。@UpendraChaudhari您能将此新集合用作数据源吗?或者您想在排序时添加/删除/移动初始列表中的每个元素并通知UI?我无法再次绑定新源,因为我有大量数据,绑定它会花费太多时间。