List 和IQueryable關鍵性的不同在哪?


雖然只是一個小問題, 但是在學習.NET的路上, 一定會遇到.
回想當時, 我在永X餘集團駐點
Jerry對我提出了疑問
“List<T> 和IQueryable<T>關鍵性的不同在哪?”

我呆了一下
回憶起製作臺灣外X部的網站的時候

=======3個月前=========

原本好好的New List 全部掛掉了
在Code完全沒動的情況下...

仔細追查以後
發現是資料庫匯入正式資料
撈1萬筆資料撈不出來 因爲超過List<T>的限制
一番嘗試後, 改成了IQueryable<T>後就可行了

改完之後, 我向前輩詢問
‘原來IQueryable<T>能存在記憶體的資料比List<T>還多,是不是這樣?’

前輩高深莫測的回答“是的”

========回到現在========

‘IQueryable<T>比較吃效能,他能存的資源比較多。
我學着前輩,裝做高深莫測。

但是他們關鍵性的不同在哪??


招喚Google大神, 得到了相關資料
http://www.chinaitlab.org/space-144-do-blog-id-15258.html

發現原來, 真的不一樣

IQueryable<T>是在foreach的時候,才向資料庫發送查詢
假設我在View抓資料的當下, 他才向資料庫發送請求

好處 不佔記憶體   壞處 向資料庫多發一次請求


List<T>則是立即發送請求把資料存入記憶體
當我在Controller使用時它就把資料存起來了

好處 List爲null的情況

當某些情況下, 有兩個資料庫, 一次只能抓一個的時候
會先把資料存入List<T>, 然後再抓第二次進行比對

List<T>最好是在查詢語法下完之後在使用, 而資料筆數在百筆~千筆之內是較爲理想的
方可使用最少的資源.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章