2011-03-08 29 views
4

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

这是我的代码:

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

在此先感谢 珍妮

+2

您*有*使用旧的非通用集合,或者您对我们提出的基于.NET 2和更高版本的解决方案感到高兴吗?那么LINQ呢? – 2011-03-08 11:29:47

回答

6

也许你应该使用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}); 
    } 
} 
+0

可以请你简单说明如何在字典中存储相同的密钥 – user642378 2011-03-15 05:51:22

+0

请参阅我在编辑中的回答 – Stecya 2011-03-15 06:58:13

0

如果你有很多事情去使用相同的密钥,把你的东西在列表中。

1

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

0

你不能使用HashTable这个。它只接受唯一的密钥。否则,您需要使用List<T>KeyValuePair<key,value>类。

相关问题