我有一个包含一组int(model.ProductCheckedIds)的模型,它代表UI上的已检查产品。
我还有一个带有子实体(LeadProducts)的EF实体(主管)。
我想出了这个解决方案来删除现在取消选择的所有子项目,并添加任何新选择的项目。
这可以简化或改进代码吗?
var addIds = model.ProductCheckedIds.Except(lead.LeadProducts.Select(x => x.ProductId));
var toAdd = addIds.Select(addId => new LeadProduct {LeadId = model.LeadId, ProductId = addId}).ToList();
var removeIds = lead.LeadProducts.Select(x => x.ProductId).Except(model.ProductCheckedIds);
var toRemove = removeIds.Select(removeId => lead.LeadProducts.Single(x => x.ProductId == removeId)).ToList();
toRemove.ForEach(x=>lead.LeadProducts.Remove(x));
toAdd.ForEach(x => lead.LeadProducts.Add(x));