Sreedhar
Sreedhar

Reputation: 30045

Foreach in Linq

Can I replace these foreach's with LINQ or delegates?

    foreach (List<Shopping.BasketPayment> payList in Basket.basketPayments)
    { 
        foreach (var pay in payList)
        {
            if (pay.paymentMethod == "Money Order" 
            {
                foreach (OrderItem orderItem in order.Items)
                {

Upvotes: 2

Views: 620

Answers (2)

mqp
mqp

Reputation: 72015

var allPayments = Basket.basketPayments.SelectMany(p => p);
var moneyOrders = allPayments.Where(p => p.paymentMethod == "Money Order");

foreach(var payment in moneyOrders)
{
    foreach(OrderItem item in order.Items)
    {

    }
}

Upvotes: 0

Marc Gravell
Marc Gravell

Reputation: 1064184

var qry = from payList in Basket.basketPayments
          from pay in payList
          where pay.paymentMethod == "Money Order"
          from orderItem in order.Items // where did "order" come from?
          ... etc ending in `select` of one or more articles

foreach(var item in qry) {
    // do something with item
}

Upvotes: 2

Related Questions