Computer Science

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.");
    }
}