我需要从特定行迭代列名和列数据类型。我看到的所有示例都迭代了整个数据表。我想将一行传递给函数以执行一堆条件处理。我想分离条件处理以便于阅读。
这是我所拥有的:
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);
}
}