データ操作

[C#] DataTableから行を削除(DELETE)する

C#でDataTableから行を削除(DELETE)するサンプルです。

サンプルソース

サンプルとして以下のDataTableを使用します。


using System.Data;

//データテーブルの生成
DataTable dt = new DataTable("PrefTable");

//データカラムの定義
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Population", typeof(int));

//データテーブルにテータを追加
dt.Rows.Add("北海道", 5248552);
dt.Rows.Add("青森県", 1246138);
dt.Rows.Add("岩手県", 1226430);
dt.Rows.Add("宮城県", 2303160);
dt.Rows.Add("秋田県", 965968);

例1)Populationが200万以上の行をDELETEする


// 条件に合致するデータを検索する
DataRow[] drResult = dt.Select("Population >= 2000000");

// 検索したデータをDataTableから削除する
foreach (var d in drResult)
{
  dt.Rows.Remove(d);
}

// 削除結果をコンソールに出力する
foreach (DataRow data in dt.Rows)
{
  Console.WriteLine(data["Name"] + ":" + data["Population"]);
}

結果

青森県:1246138
岩手県:1226430
秋田県:965968

インデックスを指定して削除したい場合

削除したい行のインデックス番号が分かっている場合は、以下の方法でDELETEできます。

例2)インデックス番号が3の行をDELETEする


// インデックス番号3を削除する
dt.Rows.RemoveAt(3);

// 削除結果をコンソールに出力する
foreach (var row in drResult)
{
  Console.WriteLine(row[0] + ":" + row[1]);
}

結果

北海道:5248552
青森県:1246138
岩手県:1226430
秋田県:965968

インデックス番号は0から始まります。

備考

  • インデックス番号で複数行削除する場合は、1行削除する毎にインデックス番号は変わるのでご注意ください。

関連記事

-データ操作
-