在foreach循环中调用Dataset属性

时间:2012-03-26 18:42:51

标签: c# sql model-view-controller

我有一个数据集,我想在一个属性的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))
{
//
}

3 个答案:

答案 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)
        {
            //
        }
    }
}