Сортировать словарь по ключам - PullRequest
8 голосов
/ 19 октября 2011

Мне нужно заказать словарь на VB.net на основе ключей. Ключи и значения являются строками. В словаре нет .Sort(). Есть ли способ сделать это без необходимости писать собственный алгоритм сортировки?

Ответы [ 3 ]

17 голосов
/ 19 октября 2011

SortedDictionary приходит на ум, но сортируется только по ключу.

В противном случае этот ответ может помочь Как отсортировать словарь C # по значению? .

4 голосов
/ 19 октября 2011

Если вам нужно сохранить базовый словарь и не использовать SortedDictionary, вы можете использовать LINQ, чтобы возвратить IEnumerable на основе того, что когда-либо вам нужно:

Dim sorted = From item In items
             Order By item.Key
             Select item.Value

SortedDictionary, вероятно, даст более высокую производительность при многократном использовании, однако до тех пор, пока вам не понадобится инвертировать этот тип в некоторый момент в будущем.

3 голосов
/ 19 октября 2011

Именно в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...