假设我在反映表数据的页面上有一个CheckBoxList。用户取消选中以前检查过的项目,并检查未检查的项目。我想用LINQ2EF更新数据库,以便记录保持与新提交的检查项匹配。
换句话说,当页面提交时,我会收到String[]
个已检查的ID。然后我需要将数据库更新为:
复杂化问题,提交的ID是字符串数组,但数据对象的Id为int。
答案 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.