How can I do an update in Linq
My code is
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);
Basically in the Cart Collection, there is an item called an Quantity which will be populated when the user will fill that.
So I am reading the Grid item and updating the Quantity attribute.
But I am sure that there must be a better way via linq or lambda to do the same.
Please help
Thanks in advance
Best Solution
Well, you could replace one
for
loop with aforeach
loop, or maybe use theList<T>.ForEach
that does the same internally, but ultimately LINQ is a query syntax (hence the Q), not a mutation syntax, and it isn't usually very beneficial to try to represent the updates via an anonymous method (/lambda).Note that .NET 4.0 introduces
Expression
nodes that allow better support for mutation, but the C# compiler doesn't add any support for them, soExpression
lambdas are still limited to query (at least, via the language).In short: maybe stick with what you have. You could add some LINQ here, but it would radically change the code in the same way that it can for some queries, so I don't see the benefit.