2011-07-19 48 views
0

我需要表示一些具有一個鍵和一個或多個值的數據,好像有一個namevaluecollection或lookup。namevaluecollection vs lookup

從我可以告訴兩者之間的主要區別是,查找是不可改變的,是否有任何其他兩個我應該知道的顯着差異?

+0

[multimap in .NET]可能的重複(http://stackoverflow.com/questions/380595/multimap-in-net) – LBushkin

+0

相似,但沒有真正談論namevalue集合 –

回答

2

NameValueCollectionILookup在幾個方面有所不同。

首先,NameValueCollection是一個來自string - > string的映射 - 每個鍵只能有一個值,並且鍵和值都必須是字符串。這聽起來並不像它符合您的要求:

我要表示有一個鍵和一個或多個值

其次一些數據,ILookup本質上是通用的多重映射 - 它映射一個鍵爲一組一個或多個值 - 並且鍵和值都可以是任何類型。就像你提到的那樣,ILookup<,>是不可變的,但它也不能直接構建。獲得實例的唯一方法是使用Enumerable.ToLookup()方法。這要求所有數據必須一次可用 - 您不能隨着時間的推移構建multimap。

如果你真的需要的是一個可變的多圖,你應該看看EditableLookup<,>MiscUtil,你的包裝Dictionary<TKey,List<TValue>>在你自己的類型。

+1

'NameValueCollection' *可以*有多個值爲一個單一的關鍵。 –