An object of type IEnumerable<T> is not evaluated and expanded before it is traversed, typically in a foreach statement.
LINQ query operators return a linear list of iterators that decorates the data source
The Decorator design pattern