First of all, HasRows is a boolean field which lets you know yes/no that there are records.
A SQLdatareader does not have a property or method to get the count of the number of records. That is because it is, as the MSDN documentation says, "forward-only stream of rows from a SQL Server database". This means, the datareader has no idea how many records there are because the records are not read or "there" yet. You have to read them to find out how many there are. This may seem like a limitation, but the fact that the dataread does not fetch all the records at once is what makes it fast and efficient.
If you do want to use the datareader and do need a count, you need to read the records and count them as you go. See this link for an example:
http://social.msdn.microsoft.com/Forums/vstudio/en-US/dc198199-be24-473c-9973-746fe14d65ba/row-count-using-a-sqldatareader?forum=csharpgeneral[
^]