c# – 有没有在.NET中自动排序的列表?

c# – 有没有在.NET中自动排序的列表?,第1张

概述我有一个图层的集合,他们有名字和颜色.我想做的是先根据颜色进行排序,然后根据他们的名字: class Layer{ public string Name {get; set;} public LayerColor Color {get; set;}}enum LayerColor{ Red, Blue, Green} 喜欢: (red) laye 我有一个图层的集合,他们有名字和颜色.我想做的是先根据颜色进行排序,然后根据他们的名字:
class Layer{    public string name {get; set;}    public Layercolor color {get; set;}}enum Layercolor{    Red,Blue,Green}

喜欢:

(red) layer2(red) layer7(blue) layer0(blue) layer3...

我正在查看SortedList,但它的行为就像一个Dictionary,所以不允许重复的项目.

另外我正在使用一个API,我通过创建顺序获取了图层列表,所以我需要获得完整的图层列表来按照我想要的方式进行排序.

最终,图层列表将被绑定到一个WPF用户界面,用户将可以添加新的图层,这就是为什么我希望内部列表总是被排序,因为性能不重要(层数少于一千).

最后,我排序的图层将通过以下方式访问:

class Image{    public MySortedList<Layer> Layers {get; set;}}

最好的方式是做什么?

解决方法@H_301_23@ 你有搜索吗? Generic SortedList和 SortedList.

所以我错过了重复的部分,这使我有点难以同意.但这里是我如何解决它:

var sortedList = new SortedList<Layercolor,SortedList<Layer,Layer>>();var redSortedList = new SortedList<Layer,Layer>();// Add all layers associated with the color redsortedList.Add(Layercolor.Red,redSortedList);

会为你工作吗此外,我更喜欢使用linq,但如果你真的想要一个排序列表,我的解决方案将很有可能工作.

最后尝试:):

public class YourClass{    private List<Layer> _layers;    public List<Layer> Layers    {        get        {            _layers = _layers.OrderBy(y => y.Layercolor).ThenBy(y => y.name).ToList();            return _layers;        }        set        {            _layers = value;        }    }}

请注意,我直接在浏览器中编写,而不是在VS中进行测试(坐在OS X上),但是您可能会得出结论.

总结

以上是内存溢出为你收集整理的c# – 有没有在.NET中自动排序的列表?全部内容,希望文章能够帮你解决c# – 有没有在.NET中自动排序的列表?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存