2013-02-22 2 views
0

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

Очевидным решением было бы добавить все опции в новом словаре, а затем цикл по пунктам:

Dim ListWithALL As Dictionary(Of Integer, String) 
ListWithALL.Add(0, "All") 
For Each option As KeyValuePair(Of Integer, String) In OptionsList 
    ListWithALL.add(option) 
Next 
OptionsList = ListWithALL 
ListWithALL.dispose() 

Но мне не очень нравится это решение, как это кажется немного длинный путь и свинья.

Я также думал об использовании чего-то подобного IComparable и сортировки данных, но я не хочу, чтобы другие данные были в том же порядке, в котором они были добавлены.

У кого-нибудь есть идеи?

+0

Ну, это код VB.Net, но вы отметили вопрос как C#. Итак, что вы используете ?! – Arran

+0

Это не вопрос, специфичный для языка, это вопрос .NET framework, на который можно ответить разработчиком C# dev или VB. –

ответ

1

Вы не можете добавить товар в какую-либо «позицию» в Dictionary<TKey,TValue>, так как он не отсортирован.

Используйте SortedDictionary<Tkey,TValue>, если вам нужно обеспечить заказ - он сортируется по ключевому заказу, поэтому, если вы хотите поместить товар в начале, вам нужно использовать ключ, который будет сортироваться до самого начала.

+0

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

+0

@NathanHastings - Единственный другой вариант, который я вижу, - это добавить этот элемент _first_, а затем все остальные элементы. Однако, как элементы фактически хранятся в «Словаре», это деталь реализации - это _might_, но может и не быть. Рассмотрим альтернативный дизайн для извлечения предметов из вашего словаря. – Oded

+0

Yeh Я думаю, ваше право относительно альтернативного дизайна, причина, по которой я хотел, чтобы это было первым, так мне не пришлось дублировать код перед моим циклом, но я придумаю что-то. –

Смежные вопросы