【C#】データテーブルの行を削除する【DataTable】

2020年2月7日

行を削除する(DataRow)

「dt.Rows.Remove(DataRow)」を使用します。

まずは削除したい行を取得します。

取得したDataRowをdt.Rows.Remove(DataRow)と指定する事で

行の削除が可能となります。


    // データテーブルの初期化
    DataTable dt = new DataTable();

    // データテーブルの名前を指定
    dt.TableName = "FRUIT";

    // 列追加
    dt.Columns.Add("HINMEI");
    dt.Columns.Add("SURYO");
    dt.Columns.Add("TANKA");
    dt.Columns.Add("KINGAKU");
    // 行追加
    dt.Rows.Add();
    dt.Rows.Add();
    dt.Rows.Add();
    dt.Rows.Add();

    /* 
      今回の内容はここから
    */ 
    // 行を削除する(DataRow)
    DataRow dr = dt.Rows[2];
    dt.Rows.Remove(dr);


インデックスを指定して行を削除する(Index)

「dt.Rows.RemoveAt(index)」を使用します。

削除したい行のインデックスを指定する事で、行が削除されます。

インデックスが指定できるのはRemoveAtのみです。Removeではできません。


    // データテーブルの初期化
    DataTable dt = new DataTable();

    // データテーブルの名前を指定
    dt.TableName = "FRUIT";

    // 列追加
    dt.Columns.Add("HINMEI");
    dt.Columns.Add("SURYO");
    dt.Columns.Add("TANKA");
    dt.Columns.Add("KINGAKU");
    // 行追加
    dt.Rows.Add();
    dt.Rows.Add();
    dt.Rows.Add();
    dt.Rows.Add();

    /* 
      今回の内容はここから
    */ 
    // インデックスを指定して行を削除する(Index)
    dt.Rows.RemoveAt(2);


コピペですぐ試せるソースコード

上記で記載した2点のソースコードをまとめました。

ソースコードをコピペするとそれぞれの動作が確認できると思います。


        private void DataTable_Row_Remove()
        {
            DataTable dt = new DataTable();

            // データテーブルの名前を指定
            dt.TableName = "FRUIT";

            // 列追加
            dt.Columns.Add("HINMEI");
            dt.Columns.Add("SURYO");
            dt.Columns.Add("TANKA");
            dt.Columns.Add("KINGAKU");
            // 行追加
            dt.Rows.Add();
            dt.Rows.Add();
            dt.Rows.Add();
            dt.Rows.Add();

            /* 
              今回の内容はここから
            */ 
            // 行削除する方法(DataRow)
            DataRow dr = dt.Rows[2];
            dt.Rows.Remove(dr);

            // インデックスを指定して削除する(Index)
            dt.Rows.RemoveAt(2);
        }


まとめ

今回は複数の方法で、行を削除するソースコードを記載しました。

用途にあったやり方、自分のやりやすい実装を採用していきましょう。


Microsoft 公式ページ

DataRowCollection クラス
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datarowcollection?view=netframework-4.0


DataRowCollection.Remove(DataRow) メソッド
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datarowcollection.remove?view=netframework-4.0


DataRowCollection.RemoveAt(Int32) メソッド
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datarowcollection.removeat?view=netframework-4.0