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

前端之家收集整理的这篇文章主要介绍了c# – 有没有在.NET中自动排序的列表?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个图层的集合,他们有名字和颜色.我想做的是先根据颜色进行排序,然后根据他们的名字:
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;}
}

最好的方式是做什么?

解决方法

你有搜索吗? Generic SortedListSortedList.

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

var sortedList = new SortedList<LayerColor,SortedList<Layer,Layer>>();
var redSortedList = new SortedList<Layer,Layer>();
// Add all layers associated with the color red
sortedList.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#相关文章