当前位置:  开发笔记 > 编程语言 > 正文

如何按键对字典进行排序

如何解决《如何按键对字典进行排序》经验,为你挑选了3个好方法。

我有字典 Dictionary

键是c1,c3,c2,t1,t4,t2我想将它们排序为c1,c2,c3,t1,t2,t3

我正在尝试使用它进行排序

Input.OrderBy(key => key.Key );

但它不起作用

任何想法如何解决这个问题



1> Erno..:

Input.OrderBy 不对字典进行排序,它会创建一个按订单顺序返回项目的查询.

也许OrderedDictionary可以为您提供所需的内容.

或使用Generic SortedDictionary


@AMH在您对其进行实际测试之前不要对性能做出假设(微基准测试不计算在内).
你怎么知道性能会有问题?

2> sandman0615..:

将未排序的对象加载到SortedDictionary对象中,如下所示:

SortedDictionary sortedCustomerData = new SortedDictionary(unsortedCustomerData);

其中unsortedCustomerData是相同的泛型类型(Dictionary字符串,字符串或在您的case字符串中,指向).它将按键自动对新对象进行排序

根据msdn:SortedDictionary(IDictionary):初始化SortedDictionary类的新实例,该实例包含从指定的IDictionary复制的元素,并使用默认的IComparer实现作为键类型.



3> Beth Whiteze..:

只是一个猜测,但看起来你假设它将排序输入.OrderBy方法实际上返回包含相同值的IOrderedEnumerable的有序实例.如果您想保留返回值,可以执行以下操作:

IOrderedEnumerable orderedInput
orderedInput = Input.OrderBy(key=>key.Key)

大多数修改集合的方法都遵循相同的模式.它这样做是为了不改变原始集合实例.这可以防止您在不打算时意外更改实例.如果您确实只想使用已排序的实例,那么您只需将变量设置为方法的返回值,如上所示.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有