LINQで行追加または更新する (忘備録)
超絶今更感が半端ないですが、個人的な忘備録メモなのでね・・
といことで超ざっくりサンプル
たとえば下記のようなDataTableがあったと仮定してですが、
以下サンプル
テーブルでは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行で書くことができます。
というチラ裏でした。