.ToLookup<TSource, TKey>
trả lại số ILookup<TKey, TSource>
. ILookup<TKey, TSource>
cũng thực hiện giao diện IEnumerable<IGrouping<TKey, TSource>>
.Tại sao ToLookup và GroupBy lại khác nhau?
.GroupBy<TSource, TKey>
trả về số IEnumerable<IGrouping<Tkey, TSource>>
.
ILookup có thuộc tính chỉ mục tiện dụng, vì vậy nó có thể được sử dụng theo cách giống như từ điển (hoặc tra cứu), trong khi GroupBy thì không. GroupBy không có người lập chỉ mục là một nỗi đau để làm việc; khá nhiều cách duy nhất bạn có thể sau đó tham chiếu đối tượng trả về là bằng cách lặp qua nó (hoặc sử dụng phương pháp mở rộng LINQ khác). Nói cách khác, bất kỳ trường hợp nào mà GroupBy hoạt động, ToLookup cũng sẽ hoạt động.
Tất cả điều này để lại cho tôi câu hỏi tại sao tôi lại bận tâm với GroupBy? Tại sao nó nên tồn tại?
'GroupBy' là' IQuerable', 'ILookup' không phải là – Magnus
groupby doesn' t liệt kê danh sách [ToLookup] (http://msdn.microsoft.com/en-us/library/system.linq.enumerable.tolookup.aspx) liệt kê nó giống như cách ToList/ToArray – Aducci
Tôi đã đề cử điều này để mở lại vì câu hỏi được cho là trùng lặp là về * IGrouping * thay vì * GroupBy * và * ILookup * thay vì * ToLookup *. Sự khác biệt giữa những khác biệt này với sự khác biệt giữa chúng. Điều này nên được rõ ràng từ sự khác biệt trong các câu trả lời giữa các câu hỏi. – Sam