Pourquoi ToLookup et Grouper différents?

.ToLookup<TSource, TKey> retourne un ILookup<TKey, TSource>. ILookup<TKey, TSource> met également en œuvre l'interface IEnumerable<IGrouping<TKey, TSource>>.

.GroupBy<TSource, TKey> retourne un IEnumerable<IGrouping<Tkey, TSource>>.

ILookup a la pratique de l'indexeur de la propriété, de sorte qu'il peut être utilisé dans un dictionnaire (ou de recherche) qu'manière, alors que le Groupe ne peut pas. GroupBy sans l'indexeur est une douleur à travailler avec, à peu près la seule façon vous pouvez alors faire référence au retour de l'objet est en bouclant sur elle (ou en utilisant un autre LINQ-méthode d'extension). En d'autres termes, tous les cas que le Groupe fonctionne, ToLookup fonctionnera aussi bien.

Tout cela me laisse avec la question de savoir pourquoi aurais-je jamais la peine avec GroupBy? Pourquoi devrait-il exister?

  • GroupBy Est IQuerable, ILookup n'est pas
  • GroupBy ne pas énumérer la liste ToLookup énumère de la même façon ToList / ToArray
  • J'ai nommé ce pour la réouverture de la question, c'est prétendument un double de est sur IGrouping plutôt que de les Grouper et de ILookup plutôt que ToLookup. Les différences entre ceux qui sont différents pour les différences entre ces. Cela devrait être évident que les différences dans les réponses entre les questions.
  • deux d'entre eux de créer un Lookup, mais GroupBy crée lorsque le résultat est énuméré referencesource.microsoft.com/#System.Core/System/Linq/...
InformationsquelleAutor Shlomo | 2012-04-18