Cita:
Iniciado por sanref o abrir dos veces un DataReader (una para ver cuantos registros tienen y otro para traer los datos)
No es necesario abrir 2 veces tu datareader.. puedes tener en tu SP todas las queries que necesites, y mediante el método datareder.NextResult() puedes obtner la query siguiente.. y con ello puedes hacer una query donde hagas un count y en la siguiente la que te regrese los resultados y todo mediante un solo SP con la misma instancia del datareader.
te mando un ejemplo para que te des una mejor idea..
http://msdn2.microsoft.com/en-us/haa3afyz.aspx
Tambien puedes guardarlo todo en un dataset aunque es más pesado pero todo depende de como tengas tu estructura y cuantos datos estes manejando..
Salu2