⚙️ C# / .NET Intermediate

What is the difference between IQueryable and IEnumerable in LINQ?

Answer

IEnumerable<T>: executes queries in memory (client-side) — all data is loaded into memory first, then filtered/transformed in C#. IQueryable<T>: executes queries at the data source (server-side) — the query is represented as an expression tree and translated to the data source's query language (SQL for EF Core). Key difference: context.Users.Where(u => u.Age > 18) with IQueryable → SQL: SELECT * FROM Users WHERE Age > 18. If cast to IEnumerable first: context.Users.AsEnumerable().Where(u => u.Age > 18) → loads ALL users into memory, then filters in C#. Always keep queries as IQueryable as long as possible (add filters, projections) before materializing with ToList()/ToListAsync(). IEnumerable is appropriate for in-memory collections (LINQ to Objects). IQueryable is for data sources (LINQ to SQL, EF Core).