Как переписать этот цикл foreach, используя linq? - PullRequest
0 голосов
/ 16 октября 2010

Предположим, у меня есть два класса, Клиент и Заказ, где одному Клиенту может быть присвоен один или несколько Заказов.

class Customer
{
  Order[] Orders;
}

class Order
{
  int OrderId;
}

Если для любого данного Клиента я хочу найти все связанные с нимOrderId, есть ли простой способ сделать это с помощью linq?То, что дает тот же результат, что и следующее решение foreach:

List<int> allOrderIds = new List<int>();
foreach (Order thisOrder in thisCustomer)
{
   allOrderIds.Add(thisOrder.OrderId);
}

TIA.

Ответы [ 3 ]

8 голосов
/ 16 октября 2010
var allOrderIds = thisCustomer.Orders.Select(o => o.OrderId).ToList();
1 голос
/ 16 октября 2010

Вы можете использовать метод расширения, который создают многие люди:

public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
{
    foreach(T item in enumeration)
    {
        action(item);
    }
}

И используйте это так:

thisCustomer.Orders.ForEach(c => allOrderIds.Add(o.OrderId));
0 голосов
/ 16 октября 2010

Используйте метод выбора.Вы также должны хранить ордера в виде списка, если хотите сделать много операторов linq для них.

thisCustomer.Orders.ToList().Select(o => o.OrderId).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...