Pages

2015/06/01

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);
}

Related Posts Plugin for WordPress, Blogger...