2004.10.06

DataRowの列名検索

[ASP.Net]
DataRow内の指定した列に格納されているデータを取得したい場合、以下のように記述します。

DataRow.Item("列名")

DataRow内に指定した列名が存在しない場合、例外が発生してしまいます。
DataRow内に指定した列名が存在するかどうかを検索し、
存在していたら何らかの処理をするコードを書きたかったのですが、
DataRowのメンバには、それらしきメソッドが見つからずに困っていました。

1つだけ成功した方法があるので、記載します。
DataTableにDataRowを入れます。
そして、DataTable.Columns.IndexOf("列名") で、-1が戻ってきたら指定した列名が存在しない。
それ以外なら、指定した列名が存在するということがわかりました。
新しくDataTableにDataRowを入れようとすると、
新しいDataTableに列の定義を設定し、それからDataRowを格納しなければなりません。
これはとても面倒な作業です。

もう少しスマートな方法があるのではないかと考えています。
何か見つかったら追記します。

コメント (1)

3年半も前の記事にコメントするのもどうかと思いますが(^^;

DataRowクラスにはTableプロパティがあります。
ですから、わざわざ新しくDataTableを用意する必要はないのです。
あと、私はIndexOfではなく、Containsを使います。
こちらのほうがソースが分かりやすいかと思いますので。

(例)
if(dataRow.Tables.Columns.Contains("column_name")){
// 処理~
}

以上

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ooya