我有一个令人费解的错误:我使用DataSet从存储过程返回结果,但是我无法使用ForEach循环数据...因为显然DataSet没有枚举
错误111 foreach语句无法对类型为' System.Data.DataSet'的变量进行操作。因为' System.Data.DataSet'不包含' GetEnumerator'
的公开定义
据我所知,每个DataSet都有一个可公开访问的枚举器,实际上在互联网上有多个以这种方式使用的DataSet示例!所以我有点困惑......我有配置问题吗?我错过了一些明显的东西吗?
我在.NET 4.6中使用WebApi
代码(通用化)如下
DataSet ds = new DataSet("DataSet");
string connectionString = ConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand sqlComm = new SqlCommand("StoredProcedure", conn);
sqlComm.Parameters.AddWithValue("@Param1", 0);
sqlComm.Parameters.AddWithValue("@Param2", 1);
sqlComm.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlComm;
da.Fill(ds);
}
foreach (DataRow d in ds)
{
// Do things
}
答案 0 :(得分:2)
像这样使用
foreach(DataRow dr in ds.Tables[0].Rows)
{
// do your work here
}
答案 1 :(得分:0)
数据集不会从System.Collections继承而且不可枚举。
https://msdn.microsoft.com/en-us/library/system.data.dataset(v=vs.110).aspx
但是,如果你调用AsEnumerable(),Datatable会这样做。
https://msdn.microsoft.com/en-us/library/system.data.datatable(v=vs.110).aspx