Przesyłanie Ado.net DataReader do IDataRecord, dając dziwny wynik

Mam zapytanie, które uruchamiam w bazie danych i widzę, że istnieje rekord na 31.05.2013. Kiedy uruchamiam to zapytanie z C # za pomocą ADO.NET, a następnie używam następującego kodu, brakuje mi rekordu na dzień 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();

    }
}

Jeśli jednak użyję tego samego zapytania z tym kodem:

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);
    }
}

... wtedy rekord z 31.05.2013 znajduje się w kolekcji - dlaczego pierwszy blok kodu dałby ten wynik?

questionAnswers(2)

yourAnswerToTheQuestion