我有一个数据集,我想在一个属性的foreach循环中调用。我不想使用.table [“xxx”]
public DataSet run(string query)
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(query, conn);
adapter.Fill(dataset);
return dataset;
}
string query = "select * from table";
foreach (DataRow row in run(query))
{
//
}
答案 0 :(得分:2)
您应该使用DataTable
代替。
答案 1 :(得分:2)
但这让我想知道原始数据集的声明位置。
foreach (DataRow row in run(query).Tables[0].Rows)
{
//
}
只是为了警告你:你的run()方法是一种反模式。我看到很多人想要将数据库调用抽象为一个接受字符串的简单方法,他们几乎总是忘记一件重要的事情:查询参数。结果是在整个项目中乱码,使用字符串连接以不安全的方式构建sql。
答案 2 :(得分:2)
DataSet没有任何返回DataRow对象的方法。
如果您无法指定返回的TableName,则可以使用如下数字索引:
foreach (DataRow row in run(query).Tables[0].Rows)
{
//
}
如果您的查询可能返回多行,您应该循环遍历所有表,如下所示:
foreach(DataTable table in run(query).Tables)
{
foreach(DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
//
}
}
}