LINQ Deferred Execution
You are a Tech Lead on-call. A production issue might involve LINQ Deferred Execution. How do you diagnose and mitigate?
Answers use simple, clear English.
Quick interview answer
Mitigate first, then root-cause. Check symptoms against: Calling Count() then foreach expecting cached results on deferred IEnumerable..
Detailed answer
Mitigate first, then root-cause. Check symptoms against: Calling Count() then foreach expecting cached results on deferred IEnumerable.. Validate with: Materialize once with ToList when reusing; use AsNoTracking for read-only EF.. Context: LINQ queries on IEnumerable defer until enumeration (foreach, ToList). Multiple enumerations re-run pipeline. IQueryable pushes expression to provider (EF SQL). Core: LINQ queries on IEnumerable defer until enumeration (foreach, ToList). Multiple enumerations re-run pipeline. IQueryable pushes expression to provider (EF SQL). Real-time example: users.Where(u => u.Active).Select(u => u.Email) builds pipeline; SQL generated only on ToListAsync in EF. Pros: Composable query building; provider translation for databases. Cons: Multiple enumeration surprise; captured variables in closures may stale. Common mistakes: Calling Count() then foreach expecting cached results on deferred IEnumerable. Best practices: Materialize once with ToList when reusing; use AsNoTracking for read-only EF. Audience level: Tech Lead.
Full explanation
LINQ queries on IEnumerable defer until enumeration (foreach, ToList). Multiple enumerations re-run pipeline. IQueryable pushes expression to provider (EF SQL).
Real example & use case
users.Where(u => u.Active).Select(u => u.Email) builds pipeline; SQL generated only on ToListAsync in EF.
Pros & cons
Pros: Composable query building; provider translation for databases. Cons: Multiple enumeration surprise; captured variables in closures may stale.
Common mistakes
Calling Count() then foreach expecting cached results on deferred IEnumerable.
Best practices
Materialize once with ToList when reusing; use AsNoTracking for read-only EF.
Follow-up questions
Only answered follow-ups are shown — click to open with full answers