gpt4 book ai didi

c# - 将 Ado.net DataReader 转换为 IDataRecord 给出奇怪的结果

转载 作者:行者123 更新时间:2023-11-30 13:32:00 26 4
gpt4 key购买 nike

我有一个针对数据库运行的查询,我可以看到有 31/05/2013 的记录。当我使用 ADO.NET 从 C# 运行此查询,然后使用以下代码时,我丢失了 2013 年 5 月 31 日的记录

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

}
}

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

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

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

最佳答案

我认为您在第一个示例中缺少记录,因为您将 reader 移动了一个然后再转换它。

试试这个改变,看看它是否有效:

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

关于c# - 将 Ado.net DataReader 转换为 IDataRecord 给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com