Hastable в C #: использование одного и того же ключа несколько раз - PullRequest
4 голосов
/ 08 марта 2011

Я получаю несколько записей с одним и тем же идентификатором и хочу сохранить их в Hashtable в C #.Я использую идентификатор в качестве ключа в Hashtable, а значением является сам объект.Выдает исключение, потому что тот же ключ добавляется снова.Есть ли способ решить эту проблему?

Это мой код:

Hashtable localItemsIndex = new Hashtable();            
foreach (TzThing thing in localThingz)
         localItemsIndex.Add(thing.Id, thing); 

Заранее спасибо Дженни

Ответы [ 4 ]

7 голосов
/ 08 марта 2011

Возможно, вам следует использовать Dictionary<Id,List<TzThing>> для хранения нескольких значений для одного ключа

public void Add(YourIdType key,TzThing thing )
{
   if(dictionary.ContainsKey(key))
   {
      dictionary[key].Add(thing);
   }
   else
   {
      dictionary.Add(key,new List<TzThing> {thing});
   }
}
1 голос
/ 08 марта 2011

Ключ хеш-таблицы должен быть уникальным: вы не можете добавить в него один и тот же ключ дважды.Вы можете использовать List или HashSet, где T - пара ключ-значение вашего класса (или использовать класс .net KeyValuePair), или класс Dictionary, где V - список или набор, но вам все равно придется управлять вставкой дубликата ключа вручную.

0 голосов
/ 15 марта 2011

Вы не можете использовать HashTable для этого. Он принимает только уникальные ключи. В противном случае вам нужно использовать List<T> с KeyValuePair<key,value> классом.

0 голосов
/ 08 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...