.AsEnumerable() 和 .ToList() 的區別:


  • .AsEnumerable()延遲執行,不會立即執行。當你調用.AsEnumerable()的時候,實際上什么都沒有發生。
  • .ToList()立即執行
  • 當你需要操作結果的時候,用.ToList(),否則,如果僅僅是用來查詢不需要進一步使用結果集,並可以延遲執行,就用.AsEnumerable()/IEnumerable /IQueryable
  • .AsEnumerable()雖然延遲執行,但還是訪問數據庫,而.ToList()直接取得結果放在內存中。比如我們需要顯示兩個部門的員工時,部門可以先取出放置在List中,然后再依次取出各個部門的員工,這時訪問的效率要高一些,因為不需要每次都訪問數據庫去取出部門。
  • IQueryable實現了IEnumberable接口。但IEnumerable<T> 換成IQueryable<T>后速度提高很多。原因:
  • IQueryable接口與IEnumberable接口的區別:  IEnumerable<T> 泛型類在調用自己的SKip 和 Take 等擴展方法之前數據就已經加載在本地內存里了,而IQueryable<T> 是將Skip ,take 這些方法表達式翻譯成T-SQL語句之后再向SQL服務器發送命令,它並不是把所有數據都加載到內存里來才進行條件過濾。
  • IEnumerable跑的是Linq to Object,強制從數據庫中讀取所有數據到內存先。
  • 引用原文 http://www.cnblogs.com/Mainz/archive/2011/04/08/2009485.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM