.ToLookup<TSource, TKey>
retorna um ILookup<TKey, TSource>
. ILookup<TKey, TSource>
também implementa interface IEnumerable<IGrouping<TKey, TSource>>
.
.GroupBy<TSource, TKey>
retorna um IEnumerable<IGrouping<Tkey, TSource>>
.
ILookup tem a propriedade indexer útil, portanto, pode ser usado de maneira semelhante a um dicionário (ou semelhante a uma consulta), enquanto o GroupBy não pode. O GroupBy sem o indexador é difícil de trabalhar; praticamente a única maneira de fazer referência ao objeto de retorno é fazendo um loop por ele (ou usando outro método de extensão LINQ). Em outras palavras, em qualquer caso em que GroupBy funcione, ToLookup funcionará também.
Tudo isso me deixa com a pergunta: por que eu deveria me preocupar com o GroupBy? Por que deveria existir?
Lookup
, mas o GroupBy
cria quando o resultado é enumerado referenceource.microsoft.com/#System.Core/System/Linq/…
GroupBy
ÉIQuerable
,ILookup
não é