При чтении данных отображения из конфигурации, система может потреблять один или несколько типов (не .NET Type)Плоский список кортежей с дублированием «ключи» против словаря списков C#
, например:
SystemAlpha потребляет TypeA
SystemBeta потребляет TypeA
SystemBeta потребляет TypeB
Это может быть сохранено в плоском списке типа List<Tuple<string, string>>
как system, type
пары, с которыми было бы легко связаться с LINQ. Запрос на то, какие типы потребляются, какие системы выполняются здесь тоже, что является плюсом. Было бы несколько записей каждой системы, если они потребляли более одного типа (т. Е. Дублирующий «ключ»). Недостатком является скорость поиска здесь O(n)
(можно использовать отсортированный список для O(log(n))
)
В то время как с Dictionary<string, List<string>>
бы одну запись для каждой системы с перечнем потребляемых видов. O(1)
поиск здесь, но с недостатком, заключающийся в том, что вы не можете легко запросить, какие системы потребляют определенный тип.
Отображения будут достаточно маленькими (вероятно), чтобы быть в порядке, имея в худшем случае O(n)
, и есть достаточно памяти, чтобы обойти (в отношении служебных данных словаря).
Так что я спрашиваю:
- Какой бы самый расширяемый и многоразовые? (возможно, в конечном итоге большое сопоставление)
- С точки зрения считывания кода, что было бы проще для кого-то позже прийти и прочитать/использовать?
- Я переусердствую это?
(И MultiValueDictionary еще не полностью отпущена)
Сколько элементов обрабатываются из файла конфигурации? –
Я не знаю, как вы складываете словарь/кортежи вместе, но если вы умны, вы, вероятно, могли бы прочитать всю эту лот в «ILookup» (предполагая, что вы можете построить всю структуру за один раз и дон- t требует каких-либо изменений после сборки). «ILookup» - это действительно неизменный «мульти» словарь. – spender
В настоящее время около 50 из config, но это с предусмотрительностью, что он может перейти на 1000+. – Tem