轉載:https://www.cnblogs.com/hedongnan/p/9513793.html
Linq和where兩種方式的結果是相同的,說明這兩者之間沒有區別,當定義一個查詢后並沒有立即執行查詢而是在執行foreach循環的時候才執行查詢而且是在每一次執行foreach循環的時候去執行查詢,這樣只要數據是變化的結果就會是變化的。但是在一些情況下,這是不可行的。調用擴展方法 ToArray()、ToEnumerable()、ToList()等可以改變這個操作,使返回的結果始終一致,這里是在調用To*這些方法時執行了一次查詢而且不是延遲查詢。FindAll()方法和Linq、where是有區別的,FindAll()不是延遲加載或者說延遲查詢,當定義一個查詢后就立即查詢出所有符合條件的數據保存在變量中。
where是臟讀。
where.to*之后直接讀取數據到緩存中。
Find/FindAll是直接讀取數據到緩存中。