gpt4 book ai didi

c# - 使用 foreach 遍历 DataTableReader 中的行

转载 作者:行者123 更新时间:2023-11-30 19:16:41 25 4
gpt4 key购买 nike

我可以使用 foreach(r 中的 DataRow 行)吗?

我有这个代码:

    conStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Server.MapPath("~/App_Data/Database.mdf") + ";Integrated Security=True;User Instance=True";
string sqlStr = "Select * FROM Msgs WHERE Reciver='"+Reciver+"'";
SqlDataAdapter daObj = new SqlDataAdapter(sqlStr, conStr);
DataSet dsObj = new DataSet();
daObj.Fill(dsObj);
DataTableReader r = dsObj.Tables[0].CreateDataReader();
foreach (DataRow row in r)

我运行了调试,它停在了 foreach 的那一行,并给了我这个错误:

无法将“System.Data.Common.DataRecordInternal”类型的对象转换为类型“System.Data.DataRow”

我该如何解决?

最佳答案

foreach 试图从 DataTableReader 中转换一个 DataRow,但它不能。

DataTableReader 读取 行,但没有 行。它只能逐行读取 DataTable 中的行。 Rafa 在这篇博文中的回答超越了 DataTableReader 的最佳使用。

如果您必须使用 DataTableReader,那么只需将它放在 while 循环中:

while (r.Read())
{
//Access r with r["columnName"]
}

如果您想要foreach,只需遍历DataTable 本身中的行:

foreach (DataRow row in dsObj.Tables[0].Rows)
{
//Do something with the rows
}

就性能而言,我认为 foreach 会更好,因为它不需要您实例化另一个对象(DataTableReader),您还可以得到如果您想修改行的内容,则可以对行进行写访问。

关于c# - 使用 foreach 遍历 DataTableReader 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22261877/

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