我使用Linq/EF4.1從數據庫中提取一些結果並希望將結果限制爲(X)最新結果。其中X是用戶設定的數字。限制從Linq列表中返回的結果的數目
有沒有辦法做到這一點?
如果這將有助於限制結果集,我目前將它們作爲List
傳回。雖然我可以通過循環來限制這一點,直到我點擊X時,我只是假設不會傳遞額外的數據。
以防萬一它是相關的... 從SQL Server數據庫運行的C#MVC3項目。
我使用Linq/EF4.1從數據庫中提取一些結果並希望將結果限制爲(X)最新結果。其中X是用戶設定的數字。限制從Linq列表中返回的結果的數目
有沒有辦法做到這一點?
如果這將有助於限制結果集,我目前將它們作爲List
傳回。雖然我可以通過循環來限制這一點,直到我點擊X時,我只是假設不會傳遞額外的數據。
以防萬一它是相關的... 從SQL Server數據庫運行的C#MVC3項目。
使用Take
功能
假設listOfItems
是你的實體對象的列表和CreatedDate
是具有日創造的價值(這裏使用的下降得到最新項目做訂單)的字段。
Take()函數從 序列的開始處返回指定數量的連續元素。
results = results.OrderByDescending(x=>x.Date).Take(10);
的OrderByDescending將整理您的日期/時間屬性(你想用它來獲得最新的或W/E邏輯)和Take將限制第一X項目(第一批項目最近,由於訂購)。
編輯:要返回某些行不從第一個行,請使用Skip()
:
results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10);
使用Take()
,轉換成一個列表中。這樣EF可以優化它創建的查詢,並只返回你需要的數據。
請您多說一點。也許有一個例子? –
@ W.M。先使用Take將允許EF在SQL查詢中執行分頁。如果首先執行ToList,則所有結果都將從SQL中撤回,然後將在內存中完成分頁。 – RedFilter
你在問linq「take(100)」嗎? – daryal