假设我有两个类,即客户和订单,其中一个客户可以与其关联一个或多个订单。
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。
答案 0 :(得分:8)
var allOrderIds = thisCustomer.Orders.Select(o => o.OrderId).ToList();
答案 1 :(得分:1)
您可以使用许多人创建的扩展方法:
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));
答案 2 :(得分:0)
使用select方法。如果你想对它们做很多linq语句,你也应该将Orders保持为List。
thisCustomer.Orders.ToList().Select(o => o.OrderId).ToList();