gpt4 book ai didi

c# - 多次读取 IDataReader 时出错

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:41 26 4
gpt4 key购买 nike

我正在尝试将 SQL 数据库中的数据(1 个表中的 4 列)加载到一个列表中,到目前为止已经完成了

List<string> FNameList = (from IDataRecord r in myReader
select (string)r["FirstName"]).ToList();

List<string> LNameList = (from IDataRecord r in myReader
select (string)r["LastName"]).ToList();

List<string> EmailList = (from IDataRecord r in myReader
select (string)r["Email"]).ToList();

List<string> PhoneList = (from IDataRecord r in myReader
select (string)r["PhoneNumber"]).ToList();

现在我使用的数据库有三行数据,所以每行的长度应该是 3。但是只有第一个返回长度为 3;其他的长度为 0。更奇怪的是,如果我注释掉第一个,第二个将起作用,但其他的则不起作用。第三个和第四个也是如此。

这很难解释,因为我无法提供用于测试的数据库,所以我想知道上面是否有明显的东西,或者这是将列数据加载到数组/列表格式中的错误方法。

最佳答案

我假设您有一个类似于此的 Select 扩展方法:

public static IEnumerable<T> Select<T>(this IDataReader reader, Func<IDataRecord, T> selector)
{
while(reader.Read())
yield return selector(reader);
}

因此,当读取器已被枚举时,它位于可用数据的末尾,再次读取数据的唯一方法是重新发出查询。所以你需要一次获取所有字段:

var records = (from IDataRecord r in myReader
select new
{
FirstName = (string)r["FirstName"],
LastName = (string)r["LastName"],
Email = (string)r["Email"],
PhoneNumber = (string)r["PhoneNumber"]
}).ToList();

关于c# - 多次读取 IDataReader 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11842660/

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