.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
створює його, коли результат перераховується referenceource.microsoft.com/#System.Core/System/Linq/…
GroupBy
ЄIQuerable
,ILookup
ні