C# — AsEnumerable()Vs. AsQueryable()
Published in
Jul 7, 2024
TEST:
public class Person
{
public int Id { get; set; }
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
IEnumerable<Person> TestEnumerable;
IQueryable<Person> TestQueryable;
using (var db = new EFContext())
{
TestEnumerable = db.Persons.AsEnumerable().Where(p => p.FirstName != "f3");
TestQueryable = db.Persons.AsQueryable().Where(p => p.FirstName != "f3");
//Here is the start of the Queries to database(Help of SQL SERVER PROFILER)
var a = TestEnumerable.Count();
// Result :
// SELECT [p].[Id], [p].[FirstName], [p].[LastName] FROM [Persons] AS [p]
var b = TestQueryable.Count();
// Result :
// SELECT COUNT(*) FROM [Persons] AS [p] WHERE [p].[FirstName] <> N'f3'
// OR [p].[FirstName] IS NULL
}
AsEnumerable executes the query on the client side
AsQueryable executes the query on the database, so it return Data filtred.