1.7Kпросмотров
17.1%от подписчиков
24 марта 2026 г.
question📷 ФотоScore: 1.9K
Почему опасно перечислять IEnumerable несколько раз? Когда мы работаем с IEnumerable, легко забыть, что это не всегда готовая коллекция. Иногда это просто последовательность, которая будет выполняться заново каждый раз, когда мы к ней обращаемся. Из-за этого код может выглядеть безобидно, но делать больше работы, чем кажется на первый взгляд.
var users = GetUsers() .Where(x => x.IsActive); if (users.Any())
{ Console.WriteLine(users.Count());
} Здесь последовательность может быть пройдена дважды: сначала в Any(), потом ещё раз в Count(). Если источник данных тяжёлый — например, запрос, генератор или цепочка LINQ с вычислениями — это уже лишняя работа, которую не видно сразу. Если ты понимаешь, что данные понадобятся несколько раз, лучше один раз материализовать их в список и дальше работать уже с ним.
var users = GetUsers() .Where(x => x.IsActive) .ToList(); if (users.Count > 0)
{ Console.WriteLine(users.Count);
} Так код становится честнее: мы явно показываем, что хотим сохранить результат и использовать его дальше без повторного перечисления. 🔥 Если последовательность нужна больше одного раза — лучше сразу зафиксировать её в памяти и не гонять одну и ту же логику повторно. ➡️ C# Ready | #совет