【问题标题】:How to perform an update using Linq or Lambda?(C#, Asp.net,Linq , Lambda)如何使用 Linq 或 Lambda 执行更新?(C#、Asp.net、Linq、Lambda)
【发布时间】:2023-04-04 14:10:01
【问题描述】:

如何在 Linq 中进行更新

我的代码是

List<Cart> objNewCartItems = (List<Cart>)Session["CartItems"];

            if ((objNewCartItems != null) && (objNewCartItems.Count > 0))
            {
                for (int i = 0; i < dgShoppingCart.Rows.Count; i++)
                {
                    Cart c = new Cart();
                    TextBox t = (TextBox)dgShoppingCart.Rows[i].FindControl("txtQuantity");
                    c.Quantity = (t.Text == string.Empty? (int?)null: Convert.ToInt32(t.Text));

                    objNewCartItems[i].Quantity = c.Quantity;
                }
            }
            Session["CartItems"] = objNewCartItems;            
            Response.Redirect("ItemListing.aspx", false);

基本上在购物车集合中,有一个称为 Quantity 的项目,当用户填写该项目时将填充该项目。

所以我正在阅读 Grid 项目并更新 Quantity 属性。

但我确信必须有更好的方法通过 linq 或 lambda 来做同样的事情。

请帮忙

提前致谢

【问题讨论】:

    标签: c# asp.net linq lambda


    【解决方案1】:

    好吧,您可以用foreach 循环替换一个for 循环,或者使用在内部执行相同操作的List&lt;T&gt;.ForEach,但最终LINQ 是一种查询 语法(因此Q),而不是突变语法,尝试通过匿名方法 (/lambda) 表示更新通常不是很有用。

    请注意,.NET 4.0 引入了Expression 节点,可以更好地支持突变,但 C# 编译器没有添加对它们的任何支持,因此Expression lambdas 仍然仅限于查询(至少,通过语言)。

    简而言之:也许坚持你所拥有的。您可以在此处添加一些 LINQ,但它会以与某些查询相同的方式从根本上更改代码,因此我看不出有什么好处。

    【讨论】:

      【解决方案2】:

      试试这个:

      int interator = 0;
      
      List<Cart> objNewCartItems = (List<Cart>)Session["CartItems"];
      
      objNewCartItems.ForEach( i => i.Quantity = GetCartQuantity(interator++));
      
      Session["CartItems"] = objNewCartItems;            
      Response.Redirect("ItemListing.aspx", false);
      
      private int GetCartQuantity(int interator)
      {
        if ((objNewCartItems != null) && (objNewCartItems.Count > 0))
        {
          Cart c = new Cart();
          TextBox t = (TextBox)dgShoppingCart.Rows[interator].FindControl("txtQuantity");
          c.Quantity = (t.Text == string.Empty? (int?)null: Convert.ToInt32(t.Text));
          return c.Quantity;                
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-12
        • 1970-01-01
        相关资源
        最近更新 更多