Casting DataReader de Ado.net a IDataRecord dando un resultado extraño

Tengo una consulta que ejecuto en la base de datos y puedo ver que hay un registro para el 31/05/2013. Cuando ejecuto esta consulta desde C # con ADO.NET, y luego uso el siguiente código, me falta el registro para el 31/05/2013

var timeSeriesList = new List<TimeSeries>();  
using (var reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        timeSeriesList = reader.Cast<IDataRecord>()
            .Select(r => new TimeSeries
                 {
                     MidRate = (double)r["MidRate"],
                     RiskFactorName = (string)r["RiskFactorName"],
                     SeriesDate = (DateTime)r["SeriesDate"]
                 }).ToList();

    }
}

Sin embargo, si uso la misma consulta con este código:

var timeSeriesList = new List<TimeSeries>();                        
using (var reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        var timeSeries = new TimeSeries
                 {
                     MidRate = (double)reader["MidRate"],
                     RiskFactorName = (string)reader["RiskFactorName"],
                     SeriesDate = (DateTime)reader["SeriesDate"]
                 };

        timeSeriesList.Add(timeSeries);
    }
}

... entonces el registro al 31/05/2013 está en la colección: ¿por qué el primer bloque de código da este resultado?

Respuestas a la pregunta(2)

Su respuesta a la pregunta