LINQ ToDictionary和ToLookup有什么区别?

LINQ ToDictionary和ToLookup有什么区别? 他们似乎也是这样做的。

字典是一个1:1映射(每个键映射到一个单一的值),一个字典在事实之后是可变的(可编辑的)。

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

作为一个方面说明,你可以查询(通过索引器)一个不存在的键,你会得到一个空序列。 对字典做同样的事情,你会得到一个exception。

那么:有多less个logging分享每个关键?

查看它的过于简单的方法是, Lookup<TKey,TValue> 大致与 Dictionary<TKey,IEnumerable<TValue>>

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