我一直在阐明ILookup<TKey, TVal>和IGrouping<TKey, TVal>之间的差异,而且我很好奇,如果我现在正确地理解它的话。 LINQ通过生成IGrouping项目的序列,同时也给了我一个ToLookup扩展方法来加强这个问题。 所以直到我看得更仔细,才觉得它们是一样的。 var q1 = from n in N group n by n.MyKey into g select g; // q1 is IEnumerable<IGrouping<TKey, TVal>> 这相当于: var q2 = N.GroupBy(n => n.MyKey, n => n); // q2 is IEnumerable<IGrouping<TKey, TVal>> 看起来很像: var q3 = N.ToLookup(n => n.MyKey, n => n); // q3 is ILookup<TKey, TVal> […]