2012-07-14 79 views
1

可能重复删除从表中的多个行:
EF Code First Delete Batch From IQueryable<T>?与LINQ查询

如何从表中删除多行与LINQ查询。

我有这样的代码:

var subjects = (from sub in db.Subjects select sub) 
       .Where(sub => sub.title.StartsWith("ab")); 

,我想删除我的表中的所有这些问题在一个命令就像在SQL:

"Delete FROM table WHERE ..." 
+0

这是LINQ-to-SQL,LINQ-to-Entities ...其他吗?没有内置的方法来做到这一点,但有扩展方法可以做到这一点(但可能有一些不需要的副作用)。 – Ocelot20 2012-07-14 18:08:14

+0

其LINQ to Entities – Hasan 2012-07-14 18:14:39

+0

我刚才问了一个类似的问题,并在这里得到了一个明智的答案:http://stackoverflow.com/questions/8538899/ef-code-first-delete-batch-from-iquibeablet – Ocelot20 2012-07-14 18:17:17

回答

2

你需要一个loop,你有要逐个删除所有实体,不幸的是,在Linq to SQL或实体框架中没有像批量删除这样的功能。

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

没有方法来删除所有的东西? – Hasan 2012-07-14 18:13:03

+0

我确信实体框架和Linq to SQL没有办法使用Linq,但可以使用db.Execute()执行任何命令,并且可以在其中写入删除查询。 – 2012-07-14 18:15:21

+0

我不想使用sql query.but它效率不高,一一删除。 – Hasan 2012-07-14 18:18:57