[英]VB.Net Order a Dictionary(Of String, Integer) by value of the Integer
我有一个String,Integer的字典,所以键是字符串,值是整数,我想按顺序对整数的值进行排序。 我怎么能实现这个目标?
您可以使用LINQ按值对Dictionary
进行排序:
Dim dictionary = New Dictionary(Of String, Integer)()
dictionary.Add("A", 2)
dictionary.Add("B", 4)
dictionary.Add("C", 5)
dictionary.Add("D", 3)
dictionary.Add("E", 1)
Dim sorted = From pair In dictionary
Order By pair.Value
Dim sortedDictionary = sorted.ToDictionary(Function(p) p.Key, Function(p) p.Value)
实际上,它不会修改原始词典,而是使用新订单创建新词典。
但是 :除了可行性之外, Dictionary
不是IList
(作为Array或List<T>
)。 它的目的是非常有效地查找密钥,但不循环所有条目。
它们是无序的,这意味着尽管您可以使用foreach循环以某种顺序检索元素,但该顺序没有特殊含义,并且它可能会在没有明显原因的情况下发生变化。
首先,字典没有内在的顺序。 这是为了查找。 但是,您可以将密钥转换为自己的有序列表。
Dim keyList as List(Of String) = (From tPair As KeyValuePair(Of String, Integer) _
In myDictionary Order By tPair.Value Ascending _
Select tPair.Key).ToList
我必须使用自定义对象做类似的事情。 我认为这应该接近(但可能不完全)你正在寻找的东西:
Dim sortedL As List(Of KeyValuePair(Of String, Integer)) = yourDictionary.ToList
sortedL.Sort(Function(firstPair As KeyValuePair(Of String, Integer), nextPair As KeyValuePair(Of String, Integer)) CInt(firstPair.Value).CompareTo(CInt(nextPair.Value)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.