基于键对字典进行排序

时间:2011-10-19 17:37:13

标签: vb.net sorting dictionary

我需要根据键在VB.net中订购一个Dictionary。键和值都是字符串。字典没有.Sort()。有没有办法在不必编写我自己的排序算法的情况下做到这一点?

3 个答案:

答案 0 :(得分:17)

我想起了{p> SortedDictionary,但它只对密钥进行排序。

否则,此答案可能有助于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