Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
使用linq的Foreach delete_Linq_Entity Framework - Fatal编程技术网

使用linq的Foreach delete

使用linq的Foreach delete,linq,entity-framework,Linq,Entity Framework,下面的语句应该从allCars中删除一些cars,它是有效的,但是我想知道是否有更好的解决方案专门使用linq foreach (var car in someCars) { db.allCars.DeleteObject(car); } 注意,db是db实体的实例 任何帮助都将不胜感激 您可以使用库根据某些条件删除实体(库可从Nuget获得): 您可以使用: db.allCars.RemoveAll(db.allCars.Where(/* condition */)); 使用L

下面的语句应该从allCars中删除一些cars,它是有效的,但是我想知道是否有更好的解决方案专门使用linq

foreach (var car in someCars) 
{
    db.allCars.DeleteObject(car); 
}
注意,db是db实体的实例

任何帮助都将不胜感激

您可以使用库根据某些条件删除实体(库可从Nuget获得):

您可以使用:

db.allCars.RemoveAll(db.allCars.Where(/* condition */));
使用Linq作为ForEach:

db.allCars.Where(/* condition */).ToList().ForEach(car => db.allCars.Remove(car));

在回答的同一行:),

可能重复Hi,感谢您的快速响应。在来这里之前,我确实尝试过这个方法,但是执行起来要花很多时间(超过一分钟)。我相信执行这个方法需要很长时间的原因是这个值从未被缓存。作为一个IEnumberable,每次迭代都会从db中获取它。因此,对于删除的每辆车,它会在删除下一辆车之前收集数据库中的每辆车。假设我是正确的,可以在
Where
子句后面加一个
.ToList()
来解决这个问题
db.allCars.Where(/* condition */).ToList().ForEach(car => db.allCars.Remove(car));