A LINQ query built with Select returns an IEnumerable; it is not executed until code requests an enumerator. This separates building a query from evaluating it. section 3.1.1
Listing 3.9 LINQ query translated to methods
public static Lazy<IEnumerable<string>> AllFonts =
new (() =>
typeof(FiggleFonts) #1
.GetProperties(
BindingFlags.Public | BindingFlags.Static)
.Select(p => p.Name)); #2
Compare the query-syntax form with its method-chain equivalent: both produce an enumerable whose query waits for enumeration. section 3.1.1
