Dev*_*Dan 1 .net c# sorting collections
我的C#程序允许用户按优先级对项目进行数字排名。我编写了一个例程,当用户修改项目等级时,该例程将自动按等级对项目进行排序。因此,当优先级为3的项目更改为1时,例程将诉诸前3个项目。那些先前排名为1、2的项目将成为排名2、3。类似地,当优先级为1的项目成为优先级3时,那些排名为2、3的项目将成为1、2。
现有的集合类是否内置了此功能?如果是这样,代码示例也将不胜感激。
C#有一个SortedSet<T>集合,可以使用IComparer<T>用户提供的自定义进行排序。
但是,集合不会对集合中已有项目的更改做出反应,即,如果在集合中已有项目时更改其优先级,它将不会自动上下移动。
您需要从中删除该项目SortedSet<T>,更改其优先级,然后重新添加。这样,集合会将其放置在新位置,并移动其他项以适应更改:
SortedSet<Project> prioritizedProjects = new SortedSet<Project>(new CompareProjByPriority());
...
Project rePrioritize = ...;
prioritizedProjects.Remove(rePrioritize);
rePrioritize.Priority = 1;
prioritizedProjects.Add(rePrioritize);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |