加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:37:45 所属栏目:百科 来源:网络整理
导读:我有一个图层的集合,他们有名字和颜色.我想做的是先根据颜色进行排序,然后根据他们的名字: class Layer{ public string Name {get; set;} public LayerColor Color {get; set;}}enum LayerColor{ Red,Blue,Green} 喜欢: (red) layer2(red) layer7(blue) la
我有一个图层的集合,他们有名字和颜色.我想做的是先根据颜色进行排序,然后根据他们的名字:
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 SortedList和 SortedList.

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

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上),但是您可能会得出结论.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读