.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? Почему он должен существовать?
Lookup, но GroupByсоздают его, когда результат перечисляется ссылкамиource.microsoft.com
GroupByЕстьIQuerable,ILookupнет