DataReaders don't return a row count, because they don't return all the rows at once.
To find out how many rows you are going to get, you'd either have to read all the rows and count them then do your processing to read the rows again, or run a
SELECT COUNT(*) FROM
query before you issue the SELECT command to get the DataReader itself - and both solutions may return a different number of rows to those returned by your final DataReader because SQL Server is a multiuser system and the number of rows could easily change.
If you need to know how many rows, use a DataAdapter to fill a DataTable instead of a DataReader as that returns when all the rows are ready and supports a count.
If you only want up to five rows, then modify your query to retrieve only the ones you want:
SELECT TOP 5 DISTINCT ...
And add an
ORDER BY
clause or SQL can return rows in any order it deems fit.