列名がわかっているときの列番号の取得方法

表題の件について似たような質問があったので以下を参照し、
dt.columns("列名").Ordinal
で一行を書き込みしてみたところ参照エラーになってしまいました。

また、dt.Columns.IndexOf("列名")でも「-1」(=該当なし)の結果が出力されました。

アルファベットをchar関数で列番号に変換する方法ではない方法で、列名から列番号を取得する方法はないでしょうか。

1 Like

こんにちは

dt.columns("列名").Ordinal
で一行を書き込みしてみたところ参照エラーになってしまいました。

列名が正しくないのではないでしょうか?
ブレークポイントを設定して、停止した状態でローカルパネルで列名を確認するか
あるいは以下の式で、カンマ区切りで列名の一覧を出力しますので、WrteLine等で出力してみてはいかがでしょうか?

String.Join(",",dt.Columns.Cast(of DataColumn).Select(Function(c) c.ColumnName))

@Yoichi
ありがとうございます。
その出力は、「“Column0,Column1,Column2,Column3,・・・”」と出力されます。
Add headerはオフにしています

こんにちは

この場合列名は Column0Column1 等になりますが、そのように指定していますでしょうか?

いえ、文字列の列名をそのまま指定しています。
Add headerをオンにしていれば文字列のままの列名で列番号を取得できるということになりますでしょうか。

列名が重複しているものがあるためAdd headerをオンにできないという理由があります。

こんにちは

ヘッダーをオフということはDataTableの1行目にヘッダ相当の情報があるということで良いでしょうか?
そうであれば以下で列番号が取得可能かと思います。

Array.IndexOf(dt.Rows(0).ItemArray,"列名")
1 Like

ありがとうございます。
こちらで取得することができました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.