1.LINQ查询使用的是延迟查询的方法,以便提高效率
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,所以编译器会创建一个枚举器,在访问枚举项后,返回他们。
所以,执行LINQ时,不会立即查询结果,而是在使用结果时进行查询。
但是,如果使用了ToArray、ToList方法就会立即查询结果,并返回结果集