.ToLookup<TSource, TKey>
返回ILookup<TKey, TSource>
。ILookup<TKey, TSource>
还实现接口IEnumerable<IGrouping<TKey, TSource>>
。
.GroupBy<TSource, TKey>
返回IEnumerable<IGrouping<Tkey, TSource>>
。
ILookup具有方便的索引器属性,因此可以类似字典(或类似查找)的方式使用,而GroupBy则不能。没有索引器的GroupBy很难使用。然后,您可以引用返回对象的唯一方法是通过遍历它(或使用其他LINQ扩展方法)。换句话说,在GroupBy工作的任何情况下,ToLookup也会工作。
所有这些使我想到了一个问题,为什么我会一直不喜欢GroupBy?为什么要存在?
GroupBy
是IQuerable
,ILookup
不是