2011-09-19 81 views
2

我正在尋找一個字典類型.NET集合支持的重複鍵和值,像這樣帶有重複鍵和值的.NET集合?

Collection c = new Collection(); 
c["Key"] = "value"; 
c["Key"] = "value"; 
c["Key1"] = "value1"; 

詞典不允許使用相同的按鍵

+0

迭代時,集合中有多少物品?兩三個? –

+2

非常不完整的問題。 –

回答

3

你可以使用字典包含列表:

Dictionary<string, List<string>> MyValues; 
2

如果你需要用C像多重映射++ ,.NET中沒有直接的等價物。但是你可以通過把集合作爲一個值Dictionary of TKey, TValue效仿這一:

Dictionary<string, List<string>> c = new Dictionary<string, List<string>>(); 
c["Key"] = new List<string>(); 
c["Key"].Add("value"); 
c["Key"].Add("value2"); 

c["Key2"] = new List<string>(); 
c["Key2"].Add("Value1"); 

另一種方式 - 就是建立自己的最愛,將「隱藏」的所有unncesessary操作一些輔助方法裏面。例如,您的索引器可以檢查您的散列表中是否已經有apporpriate鍵,並在內部創建空列表。

+2

字典不允許多個鍵。 –

+0

當然,我想很多讀者乍一看都沒有正確理解這個問題。 –

+0

@Florian確保字典支持多個鍵。我猜你的意思是字典不支持多個_values_每個鍵? –

1

您尋找的是一個字典

+1

字典不允許多個鍵。 –

0

只是一個猜測,但爲什麼不使用的字典,而是使價值一個列表?

Dictionary<string, List<string>> c = new Dictionary<string, List<string>>(); 
c["Key"] = new List<string>(); 
c["Key1"] = new List<string>(); 
c["Key"].Add("value"); 
c["Key"].Add("value"); 
c["Key1"].Add("value1"); 
+0

請修復您的代碼。這是一個等待發生的空引用異常。 – slugster

+0

完成,對不起,我猜想我有點快:P – Peter

9

我會建議使用類Lookup<TKey,TElement>。它就像一個允許重複鍵的字典。

+5

有趣的是,我從來不知道這個類存在。有用的知道,當我們最終得到NET4 :) – Ian

+1

@Ian,那不是.NET4:http://msdn.microsoft.com/en-us/library/bb460184(v=VS.90).aspx – sehe

+0

@sehe:甚至更好...不幸的是,我們仍然在NET2 :( – Ian