如何将此查询转换为LINQ

时间:2015-04-09 13:49:25

标签: c# sql linq lambda

如何将此查询转换为LINQ?

此处employeeList是员工列表(模型),idList列有ids(int)。

Update employeeList 
Set employeeList.CaseNumber = '100' 
where employeeList.id in idList

2 个答案:

答案 0 :(得分:1)

无法创建将导致给定UPDATE查询的LINQ查询。 唯一的解决方案是遍历项目集合并将CaseNumber设置为100。

foreach(var item in context.employeeList.Where(i => idList.Contains(i.id))
{
    item.CaseNumber = "100";
}
context.SaveChanges();

但这会导致n查询发送到数据库。 更好的解决方案是直接对数据库执行查询。

context.Database.SqlQuery("UPDATE ... SET ... WHERE");

另一种可能性是使用StoredProcedures然后映射到ORM

答案 1 :(得分:-1)

如果我理解得恰到好处,你只需要LINQ替代你所写的内容。 如果是这种情况,请尝试提供的代码

employeeList.Where(x => idList.Contains(x.id))。ToList()。ForEach(i => i.CaseNumber = 100);