Sort dictionary by value
我想按价值订购一本词典。它通常在.NET中执行的方式似乎在MonoAPI中不存在。
是否有任何特定的API调用,或者我应该自己执行此操作?
谢谢
- 什么是"通常在.NET中的方式"?你能举个例子吗?
- 你好像还没上网。
- 如果是System.Collections.Generic.Dictionary<,>,那么字典本身就没有特定的顺序,因此无法排序。如果要使用字典中的键/值对对对对EDOCX1(sequence),以便对IEnumerable<>进行排序,请使用例如linq方法OrderBy。
- @o.r.mapper-stackoverflow.com/questions/289/&hellip;@guy i做了,Mono中的任何功能都没有出现。
- @史提夫:那单核细胞增多症怎么办?接受的问题答案中提供的代码使用mcs/gmcs和mono分别编译和运行,没有任何编译器/运行时错误。(在Win 7 x64上使用Mono 2.10.9进行检查)
- 人力资源管理…我们的单声道电视一定过时了。它为我抛出编译错误。不确定我们使用的Mono是哪个版本,只是它在Linux上(我认为不重要)
- @史蒂夫:错误信息是什么?(请务必在您的回复前写上@和我的用户名,否则我将不会收到有关您的消息的通知,只有偶然才会找到它们。)
- @史提夫:另外,你也可以用mono --version来确定单声道安装的版本。
正如注释所示,Dictionary类没有排序。如果您想要一个有序的字典,那么就有sortedDictionary类。
但SortedDictionary是按其键排序的。按字典的值保存排序字典似乎不是一项常见的任务。
无论如何,如果要访问排序后的值,可以执行以下操作:
1
| dict.Values.OrderBy(v => v).ToList(); //Sorted list of the values of the dictionary dict |
或
1
| dict.OrderBy(kvp => kvp.Value).ToList(); //Sorted list (by value) of the key value pairs of the dictionary dict |
您可以使用LINQ:
1 2
| var dict = new Dictionary <string, int>();
var sorted = dict .OrderBy(kvp => kvp .Value).ToList(); |