LINQ queries follow deferred execution. This means when you access a LINQ query, it will get executed. If not well designed, it will execute every time you access it. In order to avoid that, convert the result to a list and then do further operations on it.
The below query explains the difference:
int[] kidsAges = { 10, 8, 12, 14, 15, 16 };var youngTeens = kidsAges.Where(k = k var youngTeensCount = youngTeens.Count();var youngTeensMaxAge = youngTeens.Max();
In the above example, the LINQ query is executed twice. To avoid this, do a .ToList()
?on the LINQ Query and then use its result.
int[] kidsAges = { 10, 8, 12, 14, 15, 16 };var youngTeens = kidsAges.Where(k => k < 14).ToList();var youngTeensCount = youngTeens.Count();var youngTeensMaxAge = youngTeens.Max();