2009-12-28 22 views

回答

6

嗯,你可以用foreach循环更换一次for循环,也可能使用该做内部相同的,但最终LINQ是查询语法(因此Q),而不是突变语法,并且尝试通过匿名方法(/ lambda)表示更新通常不是非常有利的。

需要注意的是.NET 4.0引入了Expression节点,允许突变更好的支持,但是C#编译器不会增加对他们的支援,Expression lambda表达式仍仅限于查询(至少,通过语言)。

总之:也许坚持你有什么。你可能在这里添加一些LINQ,但它会从根本上改变代码的方式,它可以用于某些查询,所以我没有看到好处。

1

试试这个:

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;     
    } 
}