You can't. The SqlDataReader is read forward only. The RecordsAffected property is only accurate after calling Close. If you must have a count, then use the Count function as Rohand said. If the query is using indexed fields in the where clause for the count, it will be fast enough.