2009-12-28 48 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;     
    } 
}