Ome*_*mer 2 c# sql-server asp.net foreach
我可以用foreach (DataRow row in r)吗?
我有这个代码:
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)
Run Code Online (Sandbox Code Playgroud)
我运行调试,它停在foreach的行上,并给了我这个错误:
Unable to cast object of type 'System.Data.Common.DataRecordInternal' to type 'System.Data.DataRow
我该如何解决?
在foreach试图蒙上DataRow从DataTableReader其所不能.
一个DataTableReader 读取行,但不具备行.它只能DataTable逐个读取行.拉法在这篇文章中的回答是最好的用法DataTableReader.
如果你必须使用a DataTableReader然后只是把它放在while循环中:
while (r.Read())
{
//Access r with r["columnName"]
}
Run Code Online (Sandbox Code Playgroud)
如果你想要foreach,只需循环遍历DataTable自己的行:
foreach (DataRow row in dsObj.Tables[0].Rows)
{
//Do something with the rows
}
Run Code Online (Sandbox Code Playgroud)
在性能方面,我认为foreach只会更好,因为它不需要你实例化另一个对象(DataTableReader如果你想修改它们的内容,你也可以获得对行的写访问权).
| 归档时间: |
|
| 查看次数: |
5525 次 |
| 最近记录: |