With deferred execution, if the data to be queried is changed, the query object uses the data at the time of execution, not at the time of definition.
var data = new List<int>() {2, 4, 6, 8};
var query = data.Select(x => x * x);
If we execute the query at this point with an immediate m...