【问题标题】:Remove multiple rows from table with a LINQ query [duplicate]使用 LINQ 查询从表中删除多行 [重复]
【发布时间】:2012-07-14 18:06:08
【问题描述】:

可能重复:
EF Code First Delete Batch From IQueryable<T>?

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

我有这样的代码:

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

我想用一个命令从我的表中删除所有这些主题,比如在 sql 中:

"Delete FROM table WHERE ..." 

【问题讨论】:

  • 这是 LINQ-to-SQL、LINQ-to-Entities...其他吗?两者都没有内置方法,但有一些扩展方法可以做到这一点(但可能会有一些不需要的副作用)。
  • 我刚才问了一个类似的问题,并在这里得到了明智的答复:stackoverflow.com/questions/8538899/…

标签: c# linq entity-framework


【解决方案1】:

为此你需要loop,你必须一个一个地删除所有实体,不幸的是在Linq to SQL或Entity Framework中都没有批量删除这样的功能。

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

【讨论】:

  • 没有办法全部删除?
  • 我确信 Entity Framework 和 Linq to SQL 没有办法使用 Linq,但是您可以使用 db.Execute() 执行任何命令,并且可以在那里编写删除查询。
  • 我不想用sql查询,但是一一删除效率不高。
猜你喜欢
  • 1970-01-01
  • 2021-04-12
  • 2023-01-22
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多