DataRow中的DataColumn名称(不是DataTable)

时间:2012-10-10 15:47:08

标签: c# .net datarow datacolumn

我需要从特定行迭代columnname和column数据类型。我见过的所有例子都迭代了整个数据表。我想将一行传递给函数来进行一系列条件处理。为了便于阅读,我想分开条件处理。

这就是我所拥有的:

private void doMore(DataRow dr)
{
    foreach (DataColumn c in dr.ItemArray)  //loop through the columns. 
    {
        MessageBox.Show(c.ColumnName.ToString());
    }
}

返回的错误是

  

System.InvalidCastException:无法将类型为“System.String”的对象强制转换为“System.Data.DataColumn”。

如何从行中获取列名称或者我没有选择并且必须将整个数据表传递给函数?

4 个答案:

答案 0 :(得分:72)

您仍然需要通过DataTable课程。但是,您可以使用DataRow实例使用Table属性来执行此操作。

foreach (DataColumn c in dr.Table.Columns)  //loop through the columns. 
{
    MessageBox.Show(c.ColumnName);
}

答案 1 :(得分:10)

通过在DataRow对象上使用扩展名,您可以更轻松地在代码中进行操作(无论如何,这样做很多),例如:

static class Extensions
{
    public static string GetColumn(this DataRow Row, int Ordinal)
    {
        return Row.Table.Columns[Ordinal].ColumnName;
    }
}

然后使用:

调用它
string MyColumnName = MyRow.GetColumn(5);

答案 2 :(得分:5)

你需要这样的东西:

foreach(DataColumn c in dr.Table.Columns)
{
  MessageBox.Show(c.ColumnName);
}

答案 3 :(得分:-5)

改为使用DataTable对象:

 private void doMore(DataTable dt)
    {
    foreach(DataColumn dc in dt.Columns)
    {
    MessageBox.Show(dc.ColumnName);
    }
    }