En SQL Server 2008 y versiones posteriores, agregue COUNT(*)
OVER ()
como uno de los nombres de columna en su consulta y se completará con el total de filas devueltas.
Se repite en cada fila, pero al menos el valor está disponible.
La razón por la que muchas otras soluciones no funcionan es que, para conjuntos de resultados muy grandes, no sabrá el total hasta después de iterar todas las filas, lo que no es práctico en muchos casos (especialmente las soluciones de procesamiento secuencial). Esta técnica le brinda el recuento total después de llamar al primer IDataReader.Read()
, por ejemplo.
select COUNT(*) OVER () as Total_Rows, ... from ...