Deferred execution enables combining different operations to build the final query, before evaluating the values:
var list = new List<int>() {1,1,2,3,5,8};
var query = list.Select(x => x + 1);
If we execute the query at this point:
foreach (var x in query) {
Console.Write($"...