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行削除する毎にインデックス番号は変わるのでご注意ください。