A LINQ query does not run when you write it, but when you enumerate it (foreach, ToList, Count, First).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // ====================================================================== // Q: What is deferred execution in LINQ? // // A LINQ query does not run when you write it, but when you enumerate it // (foreach, ToList, Count, First). Each new enumeration runs it again (with EF: // a new database query). // ====================================================================== var query = db.Orders.Where(o => o.Status == OrderStatus.Placed); // nothing yet var count = query.Count(); // query 1 var list = query.ToList(); // query 2: multiple enumeration IEnumerable<int> Numbers() { for (var i = 0; ; i++) yield return i; // lazy: produces only as many as requested } var firstFive = Numbers().Take(5).ToList(); |