在查找如何執行與LINQ-to-SQL相當的SELECT TOP 5時,我所見過的所有答案都表明使用.Take()所以:通過「SELECT TOP {x}」查詢獲得LINQ to SQL性能
var myObject = (
from myObjects in repository.GetAllMyObjects()
select myObject)
.Take(10);
我還不知道大部分的LINQ是如何工作的幕後的,但我的C類語言的理解,這將首先分配包含所有記錄的臨時數組,然後複製解決var中的前10個元素。如果您正在處理一個小數據集或沒有任何性能限制,但沒有這樣的問題,但對於我來說,如果您選擇可包含數百萬條記錄的表中的最近5個日誌條目,那麼看起來效率極低。
我的理解是如何工作的錯誤?如果是這樣,有人可以解釋實際發生了什麼?否則,只有通過LINQ-to-SQL選擇x條記錄的方式(如果有的話)更好(即更高效)的方式?
[編輯]
我假設myObject的課堂上發LINQ到SQL輸出到調試輸出按在接受答案的建議。我結束了從這裏使用DebuggerWriter:http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11
在您的調試器中,您可以檢查Linq對象,它會向您顯示它將執行的SQL查詢。也許這會有幫助? – 2010-01-11 02:35:59