Ai futuri lettori di questa domanda:si noti che il problema si è verificato perché l'OP restituiva troppe colonne nella query. Vedi i commenti sotto questa risposta.
Non sono del tutto sicuro del motivo per cui ciò sta accadendo, ma devi davvero controllare le righe solo una volta, non due, e il Read()
il metodo lo fa già.
Quindi tutto ciò di cui hai veramente bisogno è
while (reader.Read())
{
// Do your thing
}