C# 按值对字典排序

C# 按值对字典排序,c#,mono,C#,Mono,我想按价值订购一本字典。在MonoAPI中似乎不存在通常在.Net中执行的方式 是否有任何特定的API调用,或者我是否应该自己执行 谢谢您可以使用Linq: var dict = new Dictionary<string, int>(); var sorted = dict.OrderBy(kvp => kvp.Value).ToList(); var dict=newdictionary(); var sorted=dict.OrderBy(kvp=>kvp.Value)

我想按价值订购一本字典。在MonoAPI中似乎不存在通常在.Net中执行的方式

是否有任何特定的API调用,或者我是否应该自己执行

谢谢

您可以使用Linq:

var dict = new Dictionary<string, int>();
var sorted = dict.OrderBy(kvp => kvp.Value).ToList();
var dict=newdictionary();
var sorted=dict.OrderBy(kvp=>kvp.Value).ToList();

如注释所示,Dictionary类没有排序。如果你想要一本有序的词典,那就有这个类

但是SortedDictionary是按其键排序的。按值保存排序字典似乎不是一项常见的任务

无论如何,如果要访问已排序的值,可以执行以下操作:

dict.Values.OrderBy(v => v).ToList(); //Sorted list of the values of the dictionary dict


什么是“在.Net中通常的操作方式”?你能提供一个例子吗?看起来你还没有搜索过网络。如果它是一个
System.Collections.Generic.Dictionary
,那么字典本身就没有特定的顺序,因此无法排序。如果您想要一个带有字典的键/值对的
IEnumerable
(序列),以便对
IEnumerable
进行排序,请使用例如LINQ方法
OrderBy
@O.R.Mapper-.@Guy我做了,在Mono中没有找到任何可用的方法。@steve:那在Mono中不可用的呢?该问题的公认答案中提供的代码分别使用
mcs
/
gmcs
mono
编译并运行,没有任何编译器/运行时错误。(在Win 7 x64上使用Mono 2.10.9进行检查)
dict.OrderBy(kvp => kvp.Value).ToList(); //Sorted list (by value) of the key value pairs of the dictionary dict