Pat*_*ier 18 .net c# database entity-framework
使用Entity Framework,我尝试从我的对象上下文中删除一些对象:
foreach (var item in context.Items.Where( i => i.Value > 50 ) )
{
context.Items.DeleteObject(item);
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,我有一个"Collection Was Modified"异常.
那么,我该如何进行批量删除呢?
Jus*_*ner 28
您必须首先从要修改的集合中获取要删除的项目.您可以使用简单的LINQ查询(使用ToList()强制执行)来执行此操作:
var toDelete = context.Items.Where(i => i.Value > 50).ToList();
foreach(var item in toDelete)
{
context.Items.DeleteObject(item);
}
Run Code Online (Sandbox Code Playgroud)
或者如果您喜欢紧凑语法(在本例中我不喜欢),您可以使用:
context.Items
.Where(i => i.Value > 50)
.ToList()
.ForEach(item => context.Items.DeleteObject(item));
Run Code Online (Sandbox Code Playgroud)
在foreach中,当修改Collection时,您将获得异常.
解决方案:复制您的收藏.
context.Items.Where( i => i.Value > 50 ).ToList().ForEach(item => context.Items.Remove(item));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10558 次 |
| 最近记录: |