I Am correctamente usando mi propia manera de lograr esto, pero no sé si es eficiente o no, así que esta es la función:¡La forma correcta de implementar paginación en 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;
}
Funciona bien, pero al ver que el código, cuando Necesito tomar los artículos de la página 10 cuando el tamaño de la página, por ejemplo, 10 por página, selecciono el resultado 10 * 10 superior y luego omito los resultados no deseados usando la instrucción FOR.
Cualquier sugerencia, gracias de antemano.
Esto funciona bien, pero se necesita mucho tiempo para hacer:/ – Rawhi
Wow, yo siempre había hecho esto FETCH El uso de desplazamiento. Ejecuté una prueba para comparar ese método con este, y el CTE es mucho más eficiente. ¡Gracias! –