我需要表示一些具有键和一个或多个值的数据,似乎有一个 namevaluecollection 或一个查找。
据我所知,两者之间的主要区别是查找是不可变的,我应该注意两者之间的其他显着差异吗?
我需要表示一些具有键和一个或多个值的数据,似乎有一个 namevaluecollection 或一个查找。
据我所知,两者之间的主要区别是查找是不可变的,我应该注意两者之间的其他显着差异吗?
NameValueCollection
并且ILookup
在几个方面有所不同。
首先,NameValueCollection 是一个从 string -> string 的映射——每个 key 只能有一个 value,并且 key 和 value 都必须是字符串。这听起来不符合您的要求:
我需要表示一些具有键和一个或多个值的数据
其次,ILookup
本质上是一个通用的多重映射——它将一个键映射到一组一个或多个值——键和值都可以是任何类型。ILookup<,>
正如您所提到的,它是不可变的,但它也不是直接可构造的。获取实例的唯一方法是使用Enumerable.ToLookup()
方法。这要求所有数据必须立即可用 - 您不能随着时间的推移构建多地图。
如果您真正需要的是一个可变的多图,您应该查看MiscUtilEditableLookup<,>
中的任何一个,您将 a 包装为您自己的类型。Dictionary<TKey,List<TValue>>