LINQToDictionary 和 ToLookup 的区别是什么

LINQ ToDictionary 和 ToLookup 的区别是什么? 它们似乎做同样的事情。

22506 次浏览

Dictionary 是1:1映射(每个键被映射到一个值) ,dictionary 在事后是可变的(可编辑的)。

查找是一个1: many map (multi-map; 每个键被映射到具有该键的值的 IEnumerable<>) ,并且在 ILookup<,>接口上没有变异。

另外,您可以查询(通过索引器)一个不存在的键,您将得到一个空序列。对字典做同样的处理,你会得到一个例外。

那么: 每个密钥有多少条记录共享?

一种过于简化的看待它的方式是,Lookup<TKey,TValue>大致相当Dictionary<TKey,IEnumerable<TValue>>

ToDictionary 是 < TKey,TValue > ,而 ToLookup 是 < TKey,T1,T2,T3,... > 类似于 IGrouping,但枚举保留在内存中。