我怎样才能在LINQ的做一个更新如何执行使用LINQ或λ?(C#,Asp.net中的LINQ,拉姆达)
我的代码是
基本上在车的更新集合中,有一个称为数量的项目,当用户填充该项目时将填充该项目。
所以我正在阅读Grid项目并更新Quantity属性。
但我确定通过linq或lambda必须有更好的方法来做同样的事情。
请帮
在此先感谢
我怎样才能在LINQ的做一个更新如何执行使用LINQ或λ?(C#,Asp.net中的LINQ,拉姆达)
我的代码是
基本上在车的更新集合中,有一个称为数量的项目,当用户填充该项目时将填充该项目。
所以我正在阅读Grid项目并更新Quantity属性。
但我确定通过linq或lambda必须有更好的方法来做同样的事情。
请帮
在此先感谢
嗯,你可以用foreach
循环更换一次for
循环,也可能使用该做内部相同的,但最终LINQ是查询语法(因此Q),而不是突变语法,并且尝试通过匿名方法(/ lambda)表示更新通常不是非常有利的。
需要注意的是.NET 4.0引入了Expression
节点,允许突变更好的支持,但是C#编译器不会增加对他们的支援,Expression
lambda表达式仍仅限于查询(至少,通过语言)。
总之:也许坚持你有什么。你可能在这里添加一些LINQ,但它会从根本上改变代码的方式,它可以用于某些查询,所以我没有看到好处。
试试这个:
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;
}
}