我正确使用我自己的方式来实现这一点,但我不知道这是否是有效与否,所以这是功能:在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