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