.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?为什么它应该存在?