好吧,假设我想一次更新数据库中的多行,而不进行循环,如果我们使用循环,它可能看起来像这样:
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的初学者,所以如果你有更好的方法,那么如果你提供一些例子,那就更好了,谢谢你。
答案 0 :(得分:2)
LINQ
用于查询记录。您当前的foreach
循环更具可读性,如果您尝试其他方法,那么它将在内部使用循环。
您可以看到使用LINQ修改集合的this answer,但这不是推荐的方式。
答案 1 :(得分:0)
您可以使用该行:
var products = (from prod in context.Products
where prod.ProductCategoryID == myProductID
select new Product(prod.PhoneNumber.ToLower(), prod.Name.ToUpper(), prod.Address.Trim()).ToList();
如果您想直接在上下文对象中更改产品:仅在Products类中创建特定功能。它设计得很好。
(from prod in context.Products
where prod.ProductCategoryID == myProductID
select prod.MakeChange(myPhoneNumber, myName, myAddress);
您可以调用该行代码,应该沿LINQ查询更改prod。