IEnumerable IQueryable
For small datasets the difference is small, but for large datasets IQueryable is clearly faster and more resource-friendly.
IEnumerable
• Description: Operates on in-memory collections.
• Query execution location: Application-side (in C# code, in RAM).
IQueryable
• Description: Runs on remote data sources such as databases.
• Query execution location: Database-side (runs as SQL).
Example
class Program
{
static void Main()
{
using var context = new AppDbContext();
//We defined the query (IQueryable)
var query = context.Customers
.Where(c => c.City == "Ankara");
Console.WriteLine("SQL hasn't worked yet!");
// We triggered the query with ToList() (RAM)
var list = query.ToList();
Console.WriteLine("The SQL was executed and the result was loaded into RAM.");
// RAM üzerinde filtreleme (IEnumerable)
var filtered = list.Where(c => c.Name.StartsWith("A"));
Console.WriteLine("This filtering no longer goes to the database, it runs on RAM.");
}
}
class Program
{
static void Main()
{
using var context = new AppDbContext();
//We defined the query (IQueryable)
var query = context.Customers
.Where(c => c.City == "Ankara");
Console.WriteLine("SQL hasn't worked yet!");
// We triggered the query with ToList() (RAM)
var list = query.ToList();
Console.WriteLine("The SQL was executed and the result was loaded into RAM.");
// RAM üzerinde filtreleme (IEnumerable)
var filtered = list.Where(c => c.Name.StartsWith("A"));
Console.WriteLine("This filtering no longer goes to the database, it runs on RAM.");
}
}