Заказанный список Keyvaluepairs?

Есть ли набор в .NET, который позволяет хранение KeyValuePair<string, string> это сохраняет порядок вставки?
OrderedDictionary выглядел многообещающим, но, кажется, скорее недостает.
Теперь я изучаю IOrderedEnumerable>, но я, может казаться, не нахожу реализации за исключением ISortedDictionary, но это не то, что я хочу. Никакая сортировка не должна быть сделана, просто порядок вставки важен.

Обновление
Причина мне не нравится OrderedDictionary, состоит в том, что это не универсально.

7
задан Boris Callens 19 June 2010 в 20:39
поделиться

4 ответа

OrderedDictionary - это то, что вам нужно, если вам нужен доступ к элементам как по ключу, так и по последовательности вставки ... это действительно просто комбинация хэш-таблицы и списка. Она предоставляет средства доступа к элементам либо по индексу вставки, либо по ключу. Это единственная коллекция в .NET, которая делает это. К сожалению, она не является универсальной.

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

Хотя вы, конечно, можете создать свой собственный List>, вы потеряете возможность эффективного поиска по ключу. Конечно, вы можете создать свою собственную реализацию упорядоченного каталога, объединяющего список и диктант... но в посте, на который я дал ссылку, это уже сделано.

9
ответ дан 6 December 2019 в 06:35
поделиться

Просто используйте List > . Они хранятся в порядке вставки. Каждый раз, когда вы добавляете в него, самый новый добавляется в конец списка.

поэтому

var list = new List<KeyValuePair<String,String>>();

list.Add(new KeyValuePair<String,String>("",""));

Если вы хотите вытащить их по порядку, просто используйте:

list.ForEach(x=>...);

или

foreach(var item in list){
...}
7
ответ дан 6 December 2019 в 06:35
поделиться

Вы можете захотеть свернуть один, используя Queue , где T - KeyValuePair <строка, строка> . Это более надежный контракт, который явно гарантирует порядок вставки.

http://msdn.microsoft.com/en-us/library/7977ey2c.aspx

3
ответ дан 6 December 2019 в 06:35
поделиться

Вы просто должны иметь возможность использовать List>. Я не могу найти в документации MSDN утверждение, что порядок вставки гарантирован, но это довольно надежная ставка...

0
ответ дан 6 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: