gpt4 book ai didi

c# - 通过 C# 对 ObservableCollection 进行排序

转载 作者:IT王子 更新时间:2023-10-29 03:54:58 26 4
gpt4 key购买 nike

我有以下 ObservableCollection<string> .我需要按字母顺序排序

private ObservableCollection<string> _animals = new ObservableCollection<string>
{
"Cat", "Dog", "Bear", "Lion", "Mouse",
"Horse", "Rat", "Elephant", "Kangaroo", "Lizard",
"Snake", "Frog", "Fish", "Butterfly", "Human",
"Cow", "Bumble Bee"
};

我试过了 _animals.OrderByDescending .但我不知道如何正确使用它。

_animals.OrderByDescending(a => a.<what_is_here_?>);

我该怎么做?

最佳答案

介绍

基本上,如果需要显示已排序的集合,请考虑使用 CollectionViewSource类:分配(“绑定(bind)”)它的 Source源集合的属性——ObservableCollection<T> 的一个实例类。

想法是 CollectionViewSource class provides an instance of the CollectionView class .这是原始(源)集合的一种“投影”,但应用了排序、过滤等。

引用资料:

实时整形

WPF 4.5 为 CollectionViewSource 引入了“实时整形”功能.

引用资料:

解决方案

如果仍然需要对 ObservableCollection<T> 的实例进行排序类,这是如何完成的。ObservableCollection<T>类本身没有排序方法。但是,可以重新创建集合以对项目进行排序:

// Animals property setter must raise "property changed" event to notify binding clients.
// See INotifyPropertyChanged interface for details.
Animals = new ObservableCollection<string>
{
"Cat", "Dog", "Bear", "Lion", "Mouse",
"Horse", "Rat", "Elephant", "Kangaroo",
"Lizard", "Snake", "Frog", "Fish",
"Butterfly", "Human", "Cow", "Bumble Bee"
};
...
Animals = new ObservableCollection<string>(Animals.OrderBy(i => i));

其他详细信息

请注意OrderBy()OrderByDescending()方法(与其他 LINQ 扩展方法一样) 不要修改源集合!相反,他们 创建一个新序列(即实现 IEnumerable<T> 接口(interface)的类的新实例)。因此,有必要重新创建集合。

关于c# - 通过 C# 对 ObservableCollection<string> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19112922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com