Das Casting von Ado.net DataReader zu IDataRecord führt zu einem merkwürdigen Ergebnis

Ich habe eine Abfrage, die ich für die Datenbank ausgeführt habe, und ich kann feststellen, dass für den 31.05.2013 ein Datensatz vorhanden ist. Wenn ich diese Abfrage in C # mit ADO.NET ausführe und dann den folgenden Code verwende, fehlt mir der Datensatz für den 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();

    }
}

Wenn ich jedoch dieselbe Abfrage mit diesem Code verwende:

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

... dann ist der Datensatz vom 31.05.2013 in der Sammlung - warum würde der erste Codeblock dieses Ergebnis liefern?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage