Question

I've been working on this code for a while now, and am very slow at this point. I don't know if the answer is obvious, but I haven't been able to think of a way to convert this bit:

foreach (Item i in stockList)
{
    if (i == order.OrderItem)
        i.ChangeStock(order.NumberOfItems);
}
outStandingOrders.Remove(order);

into a lambda expression. The best I could come up with is

stockList.ForEach(i => i == order.OrderItem)

(Don't know where to go from here)

There is also only ever one item in stockList that is equal to order.OrderItem.

Any help would be hot

Thanks!

Was it helpful?

Solution

Basing on your information that "There is also only ever one item in stockList that is equal to order.OrderItem", I would write it simply:

 var item = stockList.FirstOrDefault(i => i == order.OrderItem);
 if (item != null)
 {
     item.ChangeStock(order.NumberOfItems);    
 }

OTHER TIPS

stockList.FindAll(i => i == order.OrderItem)
.ForEach(i => i.ChangeStock(order.NumberOfItems));

Untested, just typed ^^

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top