LINQ ToDictionary 和 ToLookup 之间有什么区别
LINQ ToDictionary 和 ToLookup 之间有什么区别?他们似乎做同样的事情。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
LINQ ToDictionary 和 ToLookup 之间有什么区别?他们似乎做同样的事情。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
字典是 1:1 映射(每个键映射到单个值),并且字典在事后是可变的(可编辑的)。
查找是一对多映射(多重映射;每个键都映射到具有该键的值的
IEnumerable
),并且ILookup< 上没有变异。 ,>
界面。作为旁注,您可以在不存在的键上查询查找(通过索引器),并且您将得到一个空序列。对字典做同样的事情,你会得到一个例外。
那么:有多少条记录共享每个密钥?
一种过于简化的看待方式是,
Lookup
大致相当于Dictionary>< /代码>
A dictionary is a 1:1 map (each key is mapped to a single value), and a dictionary is mutable (editable) after the fact.
A lookup is a 1:many map (multi-map; each key is mapped to an
IEnumerable<>
of the values with that key), and there is no mutate on theILookup<,>
interface.As a side note, you can query a lookup (via the indexer) on a key that doesn't exist, and you'll get an empty sequence. Do the same with a dictionary and you'll get an exception.
So: how many records share each key?
An overly simplified way of looking at it is that a
Lookup<TKey,TValue>
is roughly comparable to aDictionary<TKey,IEnumerable<TValue>>
ToDictionary 是而 ToLookup与 IGrouping 类似,但枚举保留在内存中。
ToDictionary is <TKey, TValue> while ToLookup<TKey, T1, T2, T3, ...> is is similar to IGrouping but enumeration stays in memory.