C# 从集合中删除项同时从相关集合中删除所有项
请原谅我的标题有点混乱,我不知道如何最好地总结我的编码问题 我使用实体框架使用对象集合进行插入和更新。有时必须插入一个项目,因为它不存在,有时它是一个更新,因为它在数据库中。我将我的集合与数据上下文进行比较,以了解哪个是哪个C# 从集合中删除项同时从相关集合中删除所有项,c#,linq,entity-framework,C#,Linq,Entity Framework,请原谅我的标题有点混乱,我不知道如何最好地总结我的编码问题 我使用实体框架使用对象集合进行插入和更新。有时必须插入一个项目,因为它不存在,有时它是一个更新,因为它在数据库中。我将我的集合与数据上下文进行比较,以了解哪个是哪个 public modelClaimDatabase EditPersonDependants(modelClaimDatabase Model) { try { using (var CasaLatinaEntities = new Casa
public modelClaimDatabase EditPersonDependants(modelClaimDatabase Model)
{
try
{
using (var CasaLatinaEntities = new CasaLatinaEntities())
{
// Do dependants logic - first find out if there are any
if (Model.ModelDependants.Count > 0)
{
// collection of dependants from Database
var qDependants = CasaLatinaEntities.tblDependants;
// collection of dependants from Model
var ModelDependants = Model.ModelDependants;
// GET all dependants from the Model that do match the DB
var UpdateList =
from m in ModelDependants
where qDependants.Any(q => q.PersonID == m.PersonID)
select m;
// GET all dependants from the Model that don't match the DB
var InsertList =
from m in ModelDependants
where !qDependants.Any(q => q.PersonID == m.PersonID)
select m;
if (InsertList.Count() > 0)
{
foreach (var dependant in InsertList)
{
Model.ModelDependants.Remove(dependant);
CreateDependant(dependant, Model);
Model.ModelDependants.Add(dependant);
}
}
}
}
}
catch (Exception ex)
{
}
return Model;
}
当我使用这个代码时
Model.ModelDependants.Remove(dependant);
这行代码
if (InsertList.Count() > 0)
再也没有什么可以列举的了。但是,我不是从InsertList中删除,而是从模型中删除
我这样做的原因是因为
CreateDependant(dependant, Model);
我正在对该对象进行更改,然后我想用新数据将其添加回我的模型。因此,我将有一个对象集合,它将显示“这是一个新添加的行”或“您已经更新了这一行”
有谁有更好的方法来编写此代码吗?我不能肯定,因为我没有准备好测试它,但我想知道根据您的结果创建一个新列表是否可以解决
计数问题
调用ToList()
将创建一个新列表,因此当您从modeldependent
中删除一个项目时,它不应该也从InsertList
中删除
var InsertList = (from m in ModelDependants
where !qDependants.Any(q => q.PersonID == m.PersonID)
select m).ToList();
谢谢你的帮助!我做了那个改变,效果很好。