我有一个 Entity Framework EntityCollection
。
我需要从数据库中删除与给定 where 子句匹配的所有项目。这是我现有的代码:
// Perform the deletes
foreach (var deleteReq in order.Requirements.Where(x=>!orderContract.Requirements.Any(y=>y.RequirementId==x.RequirementId)))
{
order.Requirements.Remove(deleteReq);
}
基本上,我试图从 order.Requirements 集合中删除不在 orderContract.Requirements 集合中的任何内容(匹配 ID)。
您可能猜到了,此代码会抛出异常,因为我正在修改我正在迭代的集合。
通常我只会使用 RemoveAll()
但 EntityCollection
不支持该方法。
那么...我怎样才能删除我需要的所有记录?
最佳答案
我创建了一个单独的列表,它似乎有效:
// Perform the deletes
var reqsToDelete = order.Requirements.Where(x=>!orderContract.Requirements.Any(y=>y.RequirementId==x.RequirementId)).ToList();
foreach (var deleteReq in reqsToDelete)
{
order.Requirements.Remove(deleteReq);
}
这样,当我从 order.Requirements 列表中删除项目时,它不会影响我正在迭代的列表。
关于c# - 如何从 Entity Framework 集合中删除项目的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7813207/