来自 DataRow(不是 DataTable)的数据列名称



我需要从特定行迭代列名和列数据类型。我看到的所有示例都迭代了整个数据表。我想将一行传递给函数以执行一堆条件处理。我想分离条件处理以便于阅读。

这是我所拥有的:

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"。

如何从行中获取列名,还是别无选择,必须将整个数据表传递给函数?

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

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

通过在 DataRow 对象上使用扩展名,可以使代码更容易(如果您经常这样做的话),例如:

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

然后使用以下方法调用它:

string MyColumnName = MyRow.GetColumn(5);

你需要这样的东西:

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

用 DataTable 对象:

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

相关内容

  • 没有找到相关文章

最新更新