Каков наилучший способ перебрать SortedDictionary в обратном направлении? - PullRequest
1 голос
/ 11 января 2011

Мне нужно перебрать словарь ... в обратном направлении от обычного цикла foreach... Каков наилучший способ сделать это?

Обновление

Существует внешний объект, который возвращает мне SortedDictionary. «Строка» должна быть уникальной и ссылаться на соответствующий объект myObject. Я хотел бы отсортировать список в алфавитном порядке по «строке» ... в обратном порядке.

Какой еще объект вы бы порекомендовали для этой цели?

1 Ответ

7 голосов
/ 11 января 2011

Что ж, класс Dictionary<K,V> использует внутреннюю хеш-таблицу для хранения своих ключей, поэтому подразумеваемый порядок отсутствует. Порядок, в котором вы добавили ключи, не сохраняется, поэтому на самом деле нет никакого реального способа «отменить» это.

Но, сказав, что если у вас есть упорядоченная коллекция, такая как List или SortedDictionary , вы можете использовать метод LINQ Reverse , чтобы отменить любую последовательность.

Обновление

В ответ на ваше обновление о наличии SortedDictionary, пожалуйста, обратитесь к методу Enumerable.Reverse, на который я ссылался выше. Вы можете перевернуть словарь (как коллекцию KeyValuePair или его свойство Keys как коллекцию строк).

SortedDictionary<string,object> dictionary = blah;
var keyValuePairs = dictionary.Reverse();
var keys = dictionary.Keys.Reverse();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...