延迟执行
查询变量本身只是存储查询命令。实际的查询执行会延迟到在 foreach 语句中循环访问查询变量时发生。 此概念称为“延迟执行”。
强制立即执行
对一系列源元素执行聚合函数的查询必须首先循环访问这些元素。Count、 Max、 Average 和 First 就属于此类查询。 由于查询本身必须使用 foreach 以便返回结果,因此这些查询在执行时不使用显式 foreach 语句。 另外还要注意,这些类型的查询返回单个值,而不是 IEnumerable 集合。
若要强制立即执行任意查询并缓存其结果,可以调用 ToList <(Of <(TSource >)>) 或 ToArray <(Of <(TSource >)>) 方法。
下面的简单的查询列子可以证明,他们分别打印出他们的类型