[C#] DataTable の Row に対して LINQ とラムダによる検索をする

DataTable を使用している業務システムは多いものだが、foreach で回しているケースも少なくない。.NET Framework のバージョンが古い場合はどうしようもないが、バージョンだけ上がっている場合は LINQ や ラムダを使用して高速に検索することができる。
var dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
for (var i = 0; i <= 10; i++)
{
 var dr = dt.NewRow();
    dr["Name"] = "hoge" + i.ToString();
    dt.Rows.Add(dr);
}

var ret = 0;

// Name の末尾が 0 であるレコードをカウントする(LINQ)。
ret = (from x in dt.AsEnumerable()
  where Convert.ToString(x["Name"]).EndsWith("0")
        select x).Count();
        Console.WriteLine(ret.ToString());

// Name の末尾が 0 であるレコードをカウントする(ラムダ)。
ret = dt.AsEnumerable().Count(x => Convert.ToString(x["Name"]).EndsWith("0"));
  Console.WriteLine(ret.ToString());

// 出力 : 2

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

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