C# — AsEnumerable()Vs. AsQueryable()

Karim Samir
SimplifyInterview
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.

--

--