In SQL Server 2008 e versioni successive, aggiungi COUNT(*)
OVER ()
come uno dei nomi di colonna nella tua query e verrà popolato con il totale delle righe restituite.
Si ripete in ogni singola riga ma almeno il valore è disponibile.
Il motivo per cui molte altre soluzioni non funzionano è che, per set di risultati molto grandi, non conoscerete il totale fino a dopo aver ripetuto tutte le righe, il che non è pratico in molti casi (soprattutto soluzioni di elaborazione sequenziale). Questa tecnica ti dà il conteggio totale dopo aver chiamato il primo IDataReader.Read()
, per esempio.
select COUNT(*) OVER () as Total_Rows, ... from ...