C#中的哈希表:多次使用相同的密钥

时间:2011-03-08 11:25:56

标签: c# hashtable

我获取具有相同ID的多个记录,我想将它们存储在C#中的Hashtable中。我使用id作为Hashtable中的键,值是对象本身。它会引发异常,因为会再次添加相同的密钥。有没有办法解决这个问题?

这是我的代码:

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

提前致谢 珍

4 个答案:

答案 0 :(得分:7)

也许您应该使用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 :(得分:1)

哈希表键必须是唯一的:您不能将相同的键两次添加到其中。您可以使用List或HashSet,其中T是您的类的键值对(或使用.net KeyValuePair类)或Dictionary类,其中V是列表或集合,但您仍需要手动管理重复键插入。

答案 2 :(得分:0)

如果您使用相同的密钥有很多事情要做,请将您的东西放在列表中。

答案 3 :(得分:0)

您无法使用HashTable。它只接受唯一键。否则,您需要将List<T>KeyValuePair<key,value>类一起使用。