title: How to detect EOF on DataReader in C# without executing Read()
body: <p>I'm familiar with using .Read() to detect the EOF</p>
  
  <pre><code>        using (IDataReader reader = SqlHelper.ExecuteReader(_connectionString, "dbo.GetOrders"))
          {
              AssertOrder(reader);
  
              while (reader.Read())
              {
                  yield return FillRecord&lt;Order&gt;(reader, StringComparer.OrdinalIgnoreCase);
              }
              reader.Close();
          }
  </code></pre>
  
  <p>Due to some weird situation I got myself into, the FillRecord actually advances the reader.  So now the .Read() in the while loop actually causes this function to skip some rows -- because we are advancing twice.</p>
  
  <p>I wish there was an IDataReader.EOF, but there isn't.  Any thoughts?</p>