Решения для словаря, соблюдающего порядок

#c# #dictionary

#c# #словарь

Вопрос:

Для Dictionary<,> «Порядок, в котором возвращаются элементы, не определен».

Я знаю, что есть SortedDictionary , но если мне просто нужен словарь, который возвращает мне элементы в том порядке, в котором я их разместил, что лучше всего сделать?

Я думаю, что мне следует использовать List<KeyValuePair<,>> и преобразовывать это в словарь, когда мне нужно выполнить поиск (в отличие от выполнения предварительного поиска по словарю).

Или я упускаю что-то более умное?

Ответ №1:

Существует не универсальный класс, который делает это: OrderedDictionary но в настоящее время нет универсальной версии.

Комментарии:

1. Спасибо, это то, о чем я не знал.

2. Это не совсем словарь, сохраняющий порядок. Вы могли бы вставлять элементы в эту коллекцию, указав index в методе Insert, изменив таким образом ее значение. Я бы выбрал здесь пользовательское решение, поскольку оно может быть гарантированно правильным.

Ответ №2:

Создайте свою собственную коллекцию с помощью резервного словаря и списка, которые вы поддерживаете в синхронизации. Всякий раз, когда элементы добавляются / удаляются, вы добавляете / удаляете их в список и словарь (то же самое с Clear()). Обязательно проверьте наличие дубликатов ключей перед добавлением элементов в список

Это позволило бы вам реализовать другую пользовательскую логику, такую как сортировка, уведомления об изменениях и т. Д