Doğru bunu başarmak için kendi yolumu kullanıyor muyum, ancak verimli olup olmadığını bilmiyorum, bu yüzden bu fonksiyonudur:SqlDataReader'da sayfalama uygulamasının doğru yolu!
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;
}
Düzgün çalışır ancak kodunu görmek gibi ne zaman Sayfa boyutu sayfa 10 gibi, sayfa boyutunu aldığımda, en iyi 10 * 10 sonucu seçiyorum ve ardından FOR deyimini kullanarak istenmeyen sonuçları atladım.
Herhangi bir öneri, şimdiden teşekkürler.
yardımcı olur:/ – Rawhi
Vay be, ben her zaman bu FETCH OFFSET kullanarak yapmıştı. Bu yöntemi bu yöntemle karşılaştırmak için bir test yaptım ve CTE çok daha verimli. Teşekkürler! –