Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpAqRe 164 of 509 menu
◀ ▶

Повторное выполнение LINQ в C#

Отложенный запрос пересчитывается при каждом полном переборе. Побочный эффект внутри Select, например печать, срабатывает снова.

Два foreach печатают "map 1"… "map 3" дважды - шесть строк "map":

IEnumerable<int> q = Enumerable.Range(1, 3).Select(n => { Console.WriteLine($"map {n}"); return n; }); foreach (int _ in q) { } foreach (int _ in q) { }

Метод ToList выполняет запрос один раз и сохраняет список. Второй перебор этого списка не вызывает Select снова:

int runs = 0; IEnumerable<int> q = Enumerable.Range(1, 2).Select(n => { runs++; return n; }); var list = q.ToList(); foreach (int _ in list) { } foreach (int _ in list) { } Console.WriteLine(runs);

Увеличивайте счётчик при преобразовании каждого названия товара. Сохраните результат в список, переберите его дважды и выведите счётчик.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить