В C # .NET 2.0, что является простым способом сделать foreach в обратном порядке? - PullRequest
16 голосов
/ 17 сентября 2008

Допустим, у меня есть объект Dictionary:

Dictionary myDictionary<int, SomeObject> = new Dictionary<string, SomeObject>();

Теперь я хочу перебрать словарь в обратном порядке. Я не могу использовать простой цикл for, потому что я не знаю ключей словаря. A foreach легко:

foreach (SomeObject object in myDictionary.Values)
{
    // Do stuff to object
}

Но как я могу выполнить это в обратном порядке?

Ответы [ 14 ]

0 голосов
/ 17 сентября 2008

Вы можете использовать LINQ для объектов Enumerable.Reverse () в .NET 2.0, используя LinqBridge .

0 голосов
/ 17 сентября 2008

Лучше всего подойдет стандартная for петля. Вам не нужно беспокоиться об обработке при обращении коллекции.

0 голосов
/ 17 сентября 2008

Если вы хотите коллекцию словарных типов, но вам нужно поддерживать порядок вставки, вы можете посмотреть в KeyedCollection здесь

Это слияние словаря и списка. Таким образом, вы можете получить доступ к элементам в коллекции через ключ или индекс вставки.

Единственное, что нужно, - это если ваш элемент, хранящийся в коллекции, должен иметь ключ int. Если бы вы могли изменить это на строку или другой тип (Guid Mabye). Поскольку коллекция 1 будет искать ключ 1, а не индекс 1.

0 голосов
/ 17 сентября 2008

Если упорядочение является наиболее важным, вы можете создать стек и создать простую структуру для хранения ваших int, пары объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...