.ToLookup<TSource, TKey>
devuelve ILookup<TKey, TSource>
. ILookup<TKey, TSource>
también implementa la interfaz IEnumerable<IGrouping<TKey, TSource>>
.¿Por qué ToLookup y GroupBy son diferentes?
.GroupBy<TSource, TKey>
devuelve IEnumerable<IGrouping<Tkey, TSource>>
.
ILookup tiene la propiedad de indexador útil, por lo que se puede utilizar en forma de diccionario (o de búsqueda), mientras que GroupBy no puede. GroupBy sin el indexador es un dolor para trabajar; más o menos la única manera en que puede hacer referencia al objeto de retorno es recorriéndolo (o usando otro método de extensión LINQ). En otras palabras, cualquier caso en que GroupBy funcione, ToLookup también funcionará.
Todo esto me deja con la pregunta ¿por qué alguna vez me molestaría con GroupBy? ¿Por qué debería existir?
'GroupBy' es' IQuerable', 'ILookup' no es – Magnus
GroupBy doesn' t enumerar la lista [ToLookup] (http://msdn.microsoft.com/en-us/library/system.linq.enumerable.tolookup.aspx) lo enumera de la misma manera ToList/ToArray – Aducci
Lo nominé para la reapertura ya que la pregunta es supuestamente una el duplicado de es aproximadamente * IGrouping * en lugar de * GroupBy * y * ILookup * en lugar de * ToLookup *. Las diferencias entre ellos son diferentes a las diferencias entre estos. Esto debería ser evidente a partir de las diferencias en las respuestas entre las preguntas. – Sam