我正確使用我自己的方式來實現這一點,但我不知道這是否是有效與否,所以這是功能:在SqlDataReader中實現分頁的正確方法!
public SqlDataReader GetArticlesByPage(int pageNum, int pageSize)
{
if (pageNum == 0)
pageNum = 1;
SqlDataReader dr = SqlHelper.ExecuteReader(string.Format("SELECT TOP {0} Des, Id, Title, Icon FROM Threads ORDER BY Id DESC", pageSize * pageNum));
int div = pageNum - 1;
div = pageSize * div;
for (int i = 0; i < div; i++)
dr.Read();
return dr;
}
它工作正常,但正如你看到的代碼時,當頁面大小(例如每頁10個)選擇前10 * 10結果,然後使用FOR語句跳過不想要的結果時,我需要採用第10頁的文章。
任何建議,在此先感謝。
這工作得很好,但它需要做這麼多的時間:/ – Rawhi 2011-04-18 14:14:14
哇,我總是這樣做使用膠印FETCH。我跑了一個測試來比較這個方法,CTE效率更高。謝謝! – 2017-09-05 18:16:35