Introduction
LINQ helps you work with collections easily, but sometimes it can be slower. Knowing how to use it well keeps your programs fast.
var result = collection.Where(x => x.Property > 10).Select(x => x.OtherProperty);var filtered = numbers.Where(n => n > 5);var list = numbers.Where(n => n > 5).ToList();var count = numbers.Count(n => n > 5);using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<int> numbers = Enumerable.Range(1, 1000000).ToList(); // Slow: multiple enumerations var filtered = numbers.Where(n => n % 2 == 0); int count = filtered.Count(); long sum = filtered.Select(n => (long)n).Sum(); Console.WriteLine($"Count: {count}"); Console.WriteLine($"Sum: {sum}"); // Faster: cache results to avoid repeating work var filteredList = numbers.Where(n => n % 2 == 0).ToList(); int countCached = filteredList.Count; long sumCached = filteredList.Select(n => (long)n).Sum(); Console.WriteLine($"Count cached: {countCached}"); Console.WriteLine($"Sum cached: {sumCached}"); } }
var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 2);
var count1 = query.Count();
var count2 = query.Count();var data = Enumerable.Range(1, 1000); var filtered = data.Where(x => x % 2 == 0); var list1 = filtered.ToList(); var list2 = filtered.ToList();
Pass the test and this pattern moves unknown