我需要根据键在VB.net中订购一个Dictionary。键和值都是字符串。字典没有.Sort()
。有没有办法在不必编写我自己的排序算法的情况下做到这一点?
答案 0 :(得分:17)
否则,此答案可能有助于How do you sort a C# dictionary by value?。
答案 1 :(得分:4)
如果您需要保留基础Dictionary并且不使用SortedDictionary,您可以使用LINQ根据您需要的标准返回IEnumerable:
Dim sorted = From item In items
Order By item.Key
Select item.Value
SortedDictionary可能会在重复使用时提供更高的性能,但只要您不需要在将来某个时候反转那种排序。
答案 2 :(得分:3)
在vb.net中正好使用此代码:
Dim myDict As New Dictionary(Of String, String)
myDict.Add("one", 1)
myDict.Add("four", 4)
myDict.Add("two", 2)
myDict.Add("three", 3)
Dim sortedDict = (From entry In myDict Order By entry.Value Ascending).ToDictionary(Function(pair) pair.Key, Function(pair) pair.Value)
For Each entry As KeyValuePair(Of String, String) In sortedDict
Console.WriteLine(String.Format("{0,10} {1,10}", entry.Key, entry.Value))
Next