延迟查询--LINQ

1.LINQ查询使用的是延迟查询的方法,以便提升效率this

 1 public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source,
 2     Func<TSource,bool> predicate)
 3 {
 4     foreach (TSource item in source)
 5     {
 6         if (predicate(item))
 7         {
 8             yield return item;
 9         }
10     }
11 }

由于使用yield return,因此编译器会建立一个枚举器,在访问枚举项后,返回他们。spa

因此,执行LINQ时,不会当即查询结果,而是在使用结果时进行查询。code

可是,若是使用了ToArray、ToList方法就会当即查询结果,并返回结果集 blog