繁体   English   中英

如何使用linq而不是first或default更新所有相关记录?

[英]How do I go about updating all relative records with my linq instead of first or default?

为了使用结帐链接更新记录,我通过Html.ActionLink传递了查询字符串unum ,然后在ActionResult调用它。

public ActionResult Checkout(Order order, int ? unum)
{            
    order = db.Orders.FirstOrDefault(o => unum == o.OrderNum);
    order.RecievedShirt = false;
    order.OrderCompleted = true;
    db.SaveChanges();

    var AuthenticationManager = HttpContext.GetOwinContext().Authentication;
    AuthenticationManager.SignOut();
    return RedirectToAction("Purchased", "Orders");        
}

在此过程中,它只会更新第一条记录。 如何全部更新?

FirstOrDefault方法返回与where条件匹配的第一个元素。 如果您希望所有符合条件的记录,请使用Where方法获取所有与该unum匹配的订单(假设您有多个订单将OrderNum值与unum变量值匹配),并在循环内对属性值进行udp处理。

同样,在获得与where条件匹配的订单时,在action方法中也不需要Order参数。

public ActionResult Checkout(int? unum)
{            
    if(unum!=null)
    {
      var allOrders = db.Orders.Where(o =>  o.OrderNum==unum.Value);
      foreach(var order in allOrders)
      {
         order.RecievedShirt = false;
         order.OrderCompleted = true;
      }
      db.SaveChanges();
    }
    //to do : Do something if unum is null ????? 
    var AuthenticationManager = HttpContext.GetOwinContext().Authentication;
    AuthenticationManager.SignOut();
    return RedirectToAction("Purchased", "Orders");        
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM