2

好的,假设我想一次更新数据库中的多行,不循环,如果我们用循环来做,它可能看起来像这样:

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 的初学者,所以如果有更好的方法,如果你能提供一些例子,那就太好了,在此先感谢。

4

2 回答 2

2

LINQ用于查询记录。您当前的foreach循环更具可读性,如果您尝试其他方法,那么它将在内部使用循环。

您可以看到使用 LINQ 修改集合的这个答案,但这不是推荐的方式。

于 2013-05-21T06:49:03.270 回答
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);

正如您可以调用该行代码一样, prod 应该随着 LINQ 查询进行更改。

于 2013-05-21T06:58:46.297 回答