2010-07-26 70 views
1

我已經使用此查詢來基於頁面大小獲取數據表的記錄。只使用Linq獲取頁面所需記錄的查詢 - 沒有根據頁面大小獲取記錄

IEnumerable<DataRow> query1 = from row in dt.AsEnumerable().Take(page_size).Skip(offset) select row; 

Datatable boundTable = query1.CopyToDataTable();

第一次當它打開偏移將是= 0;它給出了10條記錄,

下一次我通過偏移量爲10來獲得下10條記錄, 但它沒有給出任何枚舉值。給我看消息說' 枚舉沒有結果 '

但我查詢的dt有近1000條記錄。我在這裏做了什麼錯誤...

回答

3

您正在按錯誤順序使用SkipTake。試試這個:

IEnumerable<DataRow> query = dt.AsEnumerable() 
           .Skip(offset) 
           .Take(pageSize); 

(我刪除了查詢表達式語法,因爲它是不是在這裏做你任何好處。)

你在做Take然後Skip - 所以你說了一句「給我前十個記錄,然後跳到這十個中的第十個。「這顯然不會給你任何結果:)

上面說:「跳到第11條記錄,然後給我留下的前10條記錄。」

+0

@Downvoter:關心評論? – 2010-07-26 09:27:20

1

更改跳過和跳轉的順序。您要求查詢從結果集中取10,然後跳過10 - 不留任何結果。