1. ホーム
  2. c#

[解決済み] カラムabcはテーブルに属さないのですか?

2022-02-26 12:17:28

質問

C#のコードでDataTableを反復しています。私は - を使用して、行の "row" という名前の列の "columnName" を使用して内容を取得しようとしています。

object value = row["ColumnName"];

このエラーが表示されます。

Error: System.Reflection.TargetInvocationException: 例外が発生しました。 は、呼び出しのターゲットによって投げられました。 ---> System.ArgumentException: 列 'FULL_COUNT' はテーブルに属していません。 at System.Data.DataRow.GetDataColumn(String columnName)

どうしてこのようなことが可能なのでしょうか?私のSQLクエリ/結果セットにはその名前のカラムがあり、クエリはマネジメント・スタジオでも実行できます。

このエラーを修正するにはどうすればよいですか?

解決方法は?

あなたのコードは、次のような反復であると推測されます。

DataTable table = new DataTable();
foreach (DataRow row in table.Rows) {
    foreach (DataColumn col in table.Columns) {
        object value = row[col.ColumnName];
    }
}

このような場合 row["ColumnName"] という名前の同じカラムを探します。 ColumnName これは明らかにあなたのテーブルには存在しないものです。

正しい方法は row[ColumnName] または row[col.ColumnName] を繰り返すと、上記のように