2016-02-24 160 views
2

我對LINQ很陌生,我不確定如何正確使用它。LINQ查詢限制從 - 到結果

我有連接到MYSQL,我有超過3k行在一個表中,並且此刻我使用LIMIT在SQL語法中逐頁通過數據頁,我想避免由於許多SQL查詢發送通過連接。這是我當期的工作在進展LINQ代碼:

var test = from Item in ItemList 
      orderby Item.Id ascending 
      select Item; 

現在,我的SQL語法我有LIMIT 0,200獲得前200行,和第2頁上的代碼將LIMIT 200,200。我知道我可以用.Take(x)來限制linq,但我想要「取」200個記錄,其中x是起始索引。 對不起,我說,我是LINQ的新手。

謝謝! :)

+0

您是否在尋找'.Skip()'? – CodeCaster

+0

讓我想起http://stackoverflow.com/questions/35600458/better-and-performent-pagination-in-the-listt – fubo

+0

@CodeCaster是的,我顯然是!直到現在我還不知道有'.Skip()'函數。 – DethoRhyne

回答

4

您可以使用Skip方法跳過第一個n行,然後Take下一個n行。

例如:

var test = (from Item in ItemList 
      orderby Item.Id ascending 
      select Item).Skip(200).Take(200); 

https://msdn.microsoft.com/library/bb358985(v=vs.100).aspx

+0

這個伎倆!非常感謝你! :) – DethoRhyne

+0

@DethoRhyne記住我不確定這種情況的表現,我們需要查看生成的SQL,以確保它在較低級別按預期工作。 – Steve

+1

不用擔心,SQL方面沒問題,SQL連接按預期方式工作,將數據庫行加載爲對象(ID,用戶名等)。當我正在處理數據庫查看器/控制檯類型的事情時,我需要查看並且由於結果數量很高,審查結果和分頁很重要。這就是爲什麼我看着linq讓我的CPU變得輕鬆一些。 – DethoRhyne