名称值集合与查找

发布于 2024-11-24 22:24:21 字数 94 浏览 4 评论 0 原文

我需要表示一些具有键和一个或多个值的数据,似乎有一个名称值集合或查找。

据我所知,两者之间的主要区别在于查找是不可变的,我应该注意两者之间还有其他显着差异吗?

I need to represent some data that has a key and one or more values, seems there is a namevaluecollection or a lookup.

From what I can tell the main difference between the two is that lookup is immutable, is there any other significant differences in the two I should be aware of?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里南柯 2024-12-01 22:24:21

NameValueCollectionILookup 在几个方面有所不同。

首先,NameValueCollection 是一个从字符串 -> 的映射。 string - 每个键只能有一个值,并且键和值都必须是字符串。这听起来并不符合您的要求:

我需要表示一些具有一个键和一个或多个值的数据

其次,ILookup 本质上是一个通用多重映射 - 它将一个键映射到一组一个或多个值 - 并且键和值都映射可以是任何类型。正如您提到的,ILookup<,> 是不可变的,但它也不能直接构造。获取实例的唯一方法是使用 Enumerable.ToLookup() 方法。这要求所有数据必须立即可用 - 您无法随着时间的推移构建多重地图。

如果您真正需要的是可变多重映射,则应该查看 MiscUtil,将 Dictionary> 包装在您自己的类型中。

NameValueCollection and ILookup are different in several ways.

First, NameValueCollection is a map from string -> string - each key can only have one value, and both the key and the value must be strings. This doesn't sound like it meets your requirement:

I need to represent some data that has a key and one or more values

Second, ILookup is essentially a generic multimap - it maps a key to a set of one or more values - and both the key and values can be of any type. ILookup<,> is immutable, as you mention, but it's also not directly constructable. The only way to get an instance is to use the Enumerable.ToLookup() method. This requires that all of the data must be available at once - you can't build the multimap over time.

If what you really need is a mutable multimap, you should look at either the EditableLookup<,> in MiscUtil, your wrap a Dictionary<TKey,List<TValue>> in your own type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文