ToLookup — это метод LINQ, который группирует элементы коллекции по ключу. Похож на GroupBy, но есть важные отличия, которые делают его удобным в определённых ситуациях.— Как работает
ToLookupМетод создаёт структуру данных
ILookup<TKey, TElement> — это неизменяемая коллекция групп. Каждая группа содержит элементы с одинаковым ключом.var users = new[]
{
new { Name = "Anna", Department = "Dev" },
new { Name = "Boris", Department = "Dev" },
new { Name = "Clara", Department = "QA" }
};
var lookup = users.ToLookup(u => u.Department);
foreach (var user in lookup["Dev"])
{
Console.WriteLine(user.Name); // Anna, Boris
}
Обращение к группе происходит через индексатор
lookup["Dev"]. Если ключа нет — вернётся пустая последовательность, а не исключение.— ToLookup vs GroupBy
GroupBy возвращает IEnumerable<IGrouping<TKey, TElement>> — это отложенное выполнение. Группировка происходит при каждой итерации.ToLookup выполняется немедленно и возвращает готовую структуру в памяти. Это значит:• Данные группируются один раз при вызове метода
• Повторные обращения к группам не пересчитывают результат
• Потребляет память под всю структуру сразу
— Когда использовать
ToLookupПодходит, если вам нужно:
+ Многократно обращаться к одним и тем же группам
+ Избежать повторных вычислений группировки
+ Получать пустые последовательности вместо исключений для отсутствующих ключей
+ Неизменяемую структуру данных
Не подходит, если:
- Данные большие и в памяти не поместятся
- Нужна отложенная обработка
- Группировка нужна один раз — тогда
GroupBy эффективнее📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#sharp_view