namevaluecollection vs lookup - PullRequest
       26

namevaluecollection vs lookup

0 голосов
/ 19 июля 2011

Мне нужно представить некоторые данные, которые имеют ключ и одно или несколько значений, кажется, есть коллекция значений или поиск по имени.

Из того, что я могу сказать, основное различие между ними заключается в том, что поиск является неизменным, есть ли какие-либо другие существенные различия в двух, о которых я должен знать?

1 Ответ

2 голосов
/ 19 июля 2011

NameValueCollection и ILookup отличаются по нескольким причинам.

Во-первых, NameValueCollection является картой из строки -> строка - каждый ключ может иметь только одно значение, и ключ, и значение должны быть строками. Это не похоже на то, что оно соответствует вашим требованиям:

Мне нужно представить некоторые данные, которые имеют ключ и одно или несколько значений

Во-вторых, ILookup по сути является универсальной мультикартой - она ​​сопоставляет ключ с набором из одного или нескольких значений - и ключ, и значения могут быть любого типа. ILookup<,> является неизменным, как вы упоминаете, но он также не может быть создан напрямую. Единственный способ получить экземпляр - использовать метод Enumerable.ToLookup(). Для этого необходимо, чтобы все данные были доступны одновременно - вы не можете построить мультикарту с течением времени.

Если вам действительно нужна изменяемая мультикарта, вы должны взглянуть на EditableLookup<,> в MiscUtil , в свою очередь Dictionary<TKey,List<TValue>> в своем собственном типе.

...