DataTable の特定行を ラムダ式で検索・削除

DataTable の検索と削除

DataTable が未だに残っているシステムは多く、表題の表な細かい要望も作りによってはある。行を抽出するためには Select メソッドがあるが、これは場合によっては遅いので、改修するならラムダ式で検索し、その行を削除する書き方をしたほうが良い。
DataTable dt = new DataTable();
dt.Columns.Add("ProductCd", typeof(string));
DataRow dr1 = dt.NewRow();
dr1["ProductCd"] = "HGE-10";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ProductCd"] = "HOG-20";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ProductCd"] = "HGH-20";
dt.Rows.Add(dr3);

DataRow[] dr = dt.AsEnumerable().Where(x => x.Field<string>("ProductCd").EndsWith("10")).ToArray();
// この書き方も可能。
//Array.ForEach(dr, r => dt.Rows.Remove(r));
foreach (DataRow r in dr)
{
 dt.Rows.Remove(r);
}

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する