ちおさん雑記帳

何の役にも立たない雑記から、誰かの役に立つ(かも知れない)メモなど・・

LINQで行追加または更新する (忘備録)

超絶今更感が半端ないですが、個人的な忘備録メモなのでね・・

 

といことで超ざっくりサンプル

 

たとえば下記のようなDataTableがあったと仮定してですが、

 

f:id:caffe1208:20200103161718j:plain

以下サンプル

 

テーブルではOwnerが重複できないと仮定して、既にOwnerが存在していたらその行の列を更新し、存在しない場合は行を追加する例。

 

var findRow = myDataSet.CarTbl.AsEnumerable()

                          .Where(x => x.Owner == owner);   // 条件が複数あれば && や || で指定

if (findRow.Count() == 0)

{

    var newRow = myDataSet.CarTbl.NewCarTblRow();

    newRow.Maker = maker;

    newRow.Model = model;

    newRow.Grade = grade;

    newRow.Owner = owner;

    newRow.RegistrationDate = DateTime.Now;

    myDataSet.CarTbl.AddCarTblRow(newRow);

}

else

{

    findRow

    .ToList()

    .ForEach(x => {

        x.Maker = maker;

        x.Model = model;

        x.Grade = grade

        x.RegistrationDate = DateTime.Now;

    });
}

 

こんな感じで追加・更新ができます。

 

ちなみに、更新したい列が複数でない場合は

 

    findRow.Select(x => x.RegistrationDate = DateTime.Now).ToList();

 

 

のように、1行で書くことができます。

 

というチラ裏でした。