使用LINQ中的Where删除查询

时间:2018-10-12 06:47:39

标签: c# linq linq-to-sql

DELETE From Table
WHERE ID in (1,2,3, ... )

有什么方法可以在LINQ中产生以下查询?我尝试了RemoveRange,但是从SQL Server Profiler发现它实际上是分别删除了记录

2 个答案:

答案 0 :(得分:0)

您可以单行编写

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

希望这会有所帮助。

答案 1 :(得分:0)

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

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
}