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