🖥 Ускорение LINQ-запросов



LINQ-запросы позволяют элегантно обрабатывать данные, но иногда не лучшим способом это сказывается на производительности.



Рассмотрим, как оптимизировать LINQ, чтобы код оставался быстрым и эффективным.



1. Избегайте многократного вызова .Where



В LINQ каждый вызов .Where создаёт дополнительную операцию фильтрации, что может замедлить выполнение:

var result = data

.Where(x => x.IsActive)

.Where(x => x.Age > 18);




Лучше объединить условия в одном вызове, чтобы избежать лишней итерации:

var result = data.Where(x => x.IsActive && x.Age > 18);




2. Используйте ToList() и ToArray() с умом



ToList() или ToArray() создают коллекцию сразу, но применять их нужно осторожно, чтобы не перегружать программу ненужными данными в памяти:

var activeUsers = data.Where(x => x.IsActive).ToList(); // может перегрузить память


Если коллекция понадобится позже, сохраняйте запрос как IEnumerable, чтобы отложить его выполнение.



3. Используйте Any() вместо .Count()



Если нужно проверить наличие элементов, то здесь Any() быстрее, чем Count() > 0, так как завершает поиск сразу после нахождения первого подходящего элемента:

if (data.Any(x => x.IsActive)) { /* ... */ }




Жми 🔥 если понравился пост



C# Ready | #практика