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