相关疑难解决方法(0)

将Ado.net DataReader转换为IDataRecord会产生奇怪的结果

我有一个针对数据库运行的查询,我可以看到有一个31/05/2013的记录.当我使用ADO.NET从C#运行此查询,然后使用以下代码时,我错过了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();

    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我对此代码使用相同的查询:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

...然后2013年5月31日的记录在集合中 - 为什么第一个代码块会给出这个结果?

c# linq ado.net

3
推荐指数
2
解决办法
4957
查看次数

标签 统计

ado.net ×1

c# ×1

linq ×1