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上),但是您可能会得出结论. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |