特定の行の列名と列のデータ型を繰り返す必要があります。私が見たすべての例は、データテーブル全体を反復しています。単一の行を関数に渡して、一連の条件付き処理を行いたいです。読みやすくするために、条件付き処理を分離したいと思います。
これは私が持っているものです:
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
クラスを通過する必要があります。ただし、 DataRow
プロパティを使用して、Table
インスタンスを使用してこれを行うことができます。
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);
}