Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过MVC中的复选框添加/删除EF实体的方法_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 通过MVC中的复选框添加/删除EF实体的方法

C# 通过MVC中的复选框添加/删除EF实体的方法,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有一个模型,其中包含一个int数组(model.productCheckEdds),它表示UI上已检查的产品 我还有一个EF实体(lead)和子实体(LeadProducts) 我提出了这个解决方案来删除所有现在取消选中的子项,并添加所有新选中的子项 这段代码可以简化或改进吗 var addIds = model.ProductCheckedIds.Except(lead.LeadProducts.Select(x => x.ProductId)); var toAdd

我有一个模型,其中包含一个int数组(model.productCheckEdds),它表示UI上已检查的产品

我还有一个EF实体(lead)和子实体(LeadProducts)

我提出了这个解决方案来删除所有现在取消选中的子项,并添加所有新选中的子项

这段代码可以简化或改进吗

    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));

我不知道它是否可以改进,但它比我前几天做类似事情的方式要好,所以,谢谢你,让我投票吧!谢谢,我想有一种方法可以做到这一点,而不必像我以前做的那样将对象附加到EF。这是一个问题,是的,我考虑过了,我可以将它移到另一个位置吗,还是应该在CodeReview上重新复制这个问题?