【问题标题】:Delete query with Where in LINQ在 LINQ 中使用 Where 删除查询
【发布时间】:2018-10-12 06:47:39
【问题描述】:
DELETE From Table
WHERE ID in (1,2,3, ... )

有没有办法在LINQ 中产生以下查询?我试过RemoveRange,但是从SQL Server Profiler发现它实际上是单独删除记录

【问题讨论】:

  • 您可以使用Contains() 对数组/集合搜索记录,然后使用RemoveRange()DeleteOnSubmit() 删除它们。
  • RemoveRange 不会产生以下查询,并且 System.Linq @TetsuyaYamamoto 中没有 DeleteOnSubmit 扩展方法

标签: c# linq linq-to-sql


【解决方案1】:

您可以先定义要删除的项目,然后遍历列表逐个删除它们:(请注意,整个操作必须在数据库上下文范围内完成,否则将无法工作)

var toRemove = list.Where(l => l.id == 1 || l.id == 2 || l.id == 3);
foreach (var item in toRemove)
{
    databasecontext.table.Remove(item);      //replace databasecontext.table with your own context and table name
}

【讨论】:

    【解决方案2】:

    你可以写成一行

    table.RemoveAll(tbl => tbl.id == 1 || tbl.id == 2 || tbl.id == 3);
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-16
      • 2013-01-22
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多