Есть ли набор в .NET, который позволяет хранение KeyValuePair<string, string>
это сохраняет порядок вставки?
OrderedDictionary выглядел многообещающим, но, кажется, скорее недостает.
Теперь я изучаю IOrderedEnumerable>, но я, может казаться, не нахожу реализации за исключением ISortedDictionary, но это не то, что я хочу. Никакая сортировка не должна быть сделана, просто порядок вставки важен.
Обновление
Причина мне не нравится OrderedDictionary, состоит в том, что это не универсально.
OrderedDictionary
- это то, что вам нужно, если вам нужен доступ к элементам как по ключу, так и по последовательности вставки ... это действительно просто комбинация хэш-таблицы и списка. Она предоставляет средства доступа к элементам либо по индексу вставки, либо по ключу. Это единственная коллекция в .NET, которая делает это. К сожалению, она не является универсальной.
Если OrderedDictionary
не удовлетворяет вашим потребностям только потому, что он не является универсальным - тогда вы можете использовать приведенную здесь версию, которая предоставляет универсальный эквивалент. Если есть другие причины, по которым он вам не подходит, обновите свое сообщение, и мы сможем найти лучший вариант.
Хотя вы, конечно, можете создать свой собственный List
, вы потеряете возможность эффективного поиска по ключу. Конечно, вы можете создать свою собственную реализацию упорядоченного каталога, объединяющего список и диктант... но в посте, на который я дал ссылку, это уже сделано.
Просто используйте List
. Они хранятся в порядке вставки. Каждый раз, когда вы добавляете в него, самый новый добавляется в конец списка.
поэтому
var list = new List<KeyValuePair<String,String>>();
list.Add(new KeyValuePair<String,String>("",""));
Если вы хотите вытащить их по порядку, просто используйте:
list.ForEach(x=>...);
или
foreach(var item in list){
...}
Вы можете захотеть свернуть один, используя Queue
, где T - KeyValuePair <строка, строка>
. Это более надежный контракт, который явно гарантирует порядок вставки.
Вы просто должны иметь возможность использовать List
. Я не могу найти в документации MSDN утверждение, что порядок вставки гарантирован, но это довольно надежная ставка...