Ответ 1
ToLookup
использует немедленное выполнение и возвращает ILookup
, который позволяет вам просматривать группы вверх по ключу.
GroupBy
использует отложенное выполнение и просто возвращает группы в порядке, в котором каждая группа была впервые встречена (так, например, первая группа будет содержать первый элемент исходных данных), не имея представления о возможности для просмотра групп позже ключом. Каждый раз, когда вы перебираете результаты, он снова должен группироваться.
В основном, что вы должны использовать, зависит от того, что вы собираетесь делать с результатами. Если вы просто собираетесь перебирать их за один раз (например, для дальнейшей трансформации), GroupBy
обычно отлично. Если вы хотите сохранить их в виде коллекции для нескольких операций, полезен непосредственный характер ToLookup
.