使用linq to SQL更新数据库中的多个记录而不进行循环,这是可能的吗?
本文关键字:循环 更新 SQL to linq 数据库 记录 使用 | 更新日期: 2023-09-27 18:14:26
好的,假设我想一次更新数据库中的多行,而不是循环,如果我们用循环来做,它可能是这样的:
var products = (from prod in context.Products
where prod.ProductCategoryID == myProductID
select prod).ToList();
// modify each object
foreach (var product in products)
{
product.PhoneNumber = ???;
product.Name = ???;
product.Address = ???;
}
context.SubmitChanges();
有更好的方法吗?不做任何循环?考虑到我是linq的初学者,所以如果有更好的方法,如果你能给我提供一些例子,那就太好了,提前感谢。
LINQ
用于查询记录。你当前的foreach
循环更可读,如果你尝试其他方法,那么它将在内部使用循环。
您可以看到使用LINQ修改集合的答案,但这不是推荐的方法。
你可以使用这一行:
var products = (from prod in context.Products
where prod.ProductCategoryID == myProductID
select new Product(prod.PhoneNumber.ToLower(), prod.Name.ToUpper(), prod.Address.Trim()).ToList();
如果你想在你的context对象中直接改变你的product:只在products类中创建一个特定的函数。它会设计得很好。
(from prod in context.Products
where prod.ProductCategoryID == myProductID
select prod.MakeChange(myPhoneNumber, myName, myAddress);
由于您可以调用这行代码,因此应该沿着LINQ查询更改prod。