Linq2EF:使用CheckBoxList / ID值集的结果更新记录

时间:2010-10-19 19:33:30

标签: linq-to-entities set checkboxlist

假设我在反映表数据的页面上有一个CheckBoxList。用户取消选中以前检查过的项目,并检查未检查的项目。我想用LINQ2EF更新数据库,以便记录保持与新提交的检查项匹配。

换句话说,当页面提交时,我会收到String[]个已检查的ID。然后我需要将数据库更新为:

  1. 删除那里的记录,但是 现在没有ID
  2. 添加不存在的记录,但是 现在已经检查了ID
  3. 留下那里的记录,和 仍然单独检查。
  4. 复杂化问题,提交的ID是字符串数组,但数据对象的Id为int。

1 个答案:

答案 0 :(得分:0)

嗯,你写代码。

var submittedAsInts = submittedAsString.Select(s => int.Parse(s));
var toAdd = submittedAsInts.Where(i => !existingEntity.SomeProperty.Any(p => p.Id == i));
var toDelete = existingEntity.SomeProperty.Where(p => !submittedAsInts.Contains(p.Id));
foreach (var delId in toDelete)
{
    var o = existingEntity.SomeProperty.Single(p => p.Id == delID);
    existingEntity.SomeProperty.Remove(o);
    Context.DeleteObject(o);
}
// similarly for insert.