
今回は、C#を利用したDatatableの列の削除方法を紹介していきます。
不要な列がある場合は、削除していきましょう。
Datatableの使い方や、行の削除方法を知りたい人は、こちらを参考にしてみてください。
それではさっそくやっていきましょう。
列の削除 Remove RemoveAt
Datatableの列を削除するには、Removeもしくは、RemoveAtを利用します。
今回は、列を削除したいので、Columsに対してRemoveしていきましょう。
datatable.Columns.Remove("列名");
もしくは
datatable.Columns.RemoveAt(列数);
Reomveは列名称、ReomveAtは行の位置で削除することが可能です。
使用例 Remove
実際の例を見ていきましょう。
列(name、old、height)の3列があるDatatableを準備しました。
このDatatableから、Removeを使って「old」を削除してみましょう。
datatable.Columns.Remove("old");
結果
「old」を削除することができましたね!
Removeの場合、列名を指定して削除することができます。
使用例 RemoveAt
続いて、RemoveAtの使用方法を紹介していきます。
先ほどと同じ内容をRemoveAtを利用してやってみましょう。
datable.Columns.RemoveAt(1);
解説
RemoveAtは0が1列目になるので、「old」は2列目なので、1を指定しています。
0から始まるので注意してください。
注意点
RemoveAtを利用するときの注意点を紹介します。
先ほどのDatatableから「old、height」を削除してみましょう。
2列目と3列をを削除していきます。
datatable.Columns.RemoveAt(1);
datatable.Columns.RemoveAt(2);
この場合、エラーが発生してしまいます。
これは、列を削除した後すぐインデックスが振りなおされるので、発生してしまいます。
「0:name 1:old 2:height」この状態からoldが削除されます。
「0:name 1:height」このようになるので、RemoveAt(2)で削除しようとすると「列2がありません」とエラーが出てしまいます。
なので、削除するときはインデックスが大きい順に削除するとエラーなく対応できます。
datatable.Columns.RemoveAt(2);
datatable.Columns.RemoveAt(1);
複数列を削除するときは、注意してくださいね。
サンプルソース
最後にサンプルソースを載せておきます。
private void frmDtColumnsDelete_Load(object sender, EventArgs e)
{
//データテーブル作成
DataTable dt = new DataTable();
//列作成
dt.Columns.Add("name");
dt.Columns.Add("old");
dt.Columns.Add("height");
//行追加
DataRow dtRow;
dtRow = dt.NewRow();
dtRow["name"] = "ひろにも";
dtRow["old"] = "10";
dtRow["height"] = 100;
dt.Rows.Add(dtRow);
//列削除
//dt.Columns.Remove("old");
//列削除
dt.Columns.RemoveAt(2);
dt.Columns.RemoveAt(1);
}
まとめ
今回は、Datatableの列を削除する方法を紹介しました。
RemoveとRemoveAtで列名もしくは、列数を指定してください。
datatable.Columns.Remove("列名");
datatable.Columns.RemoveAt(列数);
また、注意点として、RemoveAtを利用するときは、インデックスが変わるので注意してください。