C# 使用LINQ查询从表中删除多行

C# 使用LINQ查询从表中删除多行,c#,linq,entity-framework,C#,Linq,Entity Framework,可能重复: 如何使用LINQ查询从表中删除多行 我有如下代码: var subjects = (from sub in db.Subjects select sub) .Where(sub => sub.title.StartsWith("ab")); 我想用一个命令从我的表中删除所有这些主题,就像在sql中一样: "Delete FROM table WHERE ..." 为此,您需要一个循环,必须逐个删除所有实体,不幸的是,无论是在linqtosq

可能重复:

如何使用LINQ查询从表中删除多行

我有如下代码:

var subjects = (from sub in db.Subjects select sub)
               .Where(sub => sub.title.StartsWith("ab"));
我想用一个命令从我的表中删除所有这些主题,就像在sql中一样:

"Delete FROM table WHERE ..." 

为此,您需要一个
循环
,必须逐个删除所有实体,不幸的是,无论是在linqtosql中还是在Entity框架中,都没有批量删除这样的功能

foreach(var subject in subjects)
{
    db.Subjects.Remove(subject);
}
db.SubmitChanges();

这是LINQ到SQL,LINQ到实体…其他吗?这两种方法都没有内置的方法,但是有一些扩展方法可以做到这一点(但可能会有一些不必要的副作用)。我刚才问了一个类似的问题,并在这里得到了一个明智的回答:没有方法一起删除所有内容?我确信Entity Framework和Linq to SQL无法使用Linq,但是您可以使用db.execute()执行任何命令,并且可以在那里编写删除查询。我不想使用sql查询。但是逐个删除并不高效。