C# C Linq对子列表的查询
我有一个如下的类结构,其中我有一个OrderItems列表,每个项目都有一个折扣列表C# C Linq对子列表的查询,c#,linq,C#,Linq,我有一个如下的类结构,其中我有一个OrderItems列表,每个项目都有一个折扣列表 public class Order { public IList<OrderItem> OrderItems = new List<OrderItem>(); } public class OrderItem { public IList<Discount> Discounts = new List<Discount>(); } public
public class Order
{
public IList<OrderItem> OrderItems = new List<OrderItem>();
}
public class OrderItem
{
public IList<Discount> Discounts = new List<Discount>();
}
public class Discount
{
public string Desc { get; set; }
public decimal Amount { get; set; }
public bool IsActive { get; set; }
}
如果我想获得一个IsActive标志为true的所有折扣列表,我将如何在Linq查询中实现这一点
目前这是我所拥有的,但它非常丑陋,有2个foreach语句需要删除
IList<Discount> activeDiscounts = new List<Discount>();
foreach (OrderItem item in order.OrderItems)
{
var aDiscounts = from discount in item.Discounts.AsEnumerable()
where discount.IsActive == true
select discount;
foreach (Discount discount in aDiscounts)
{
activeDiscounts.Add(discount);
}
}
以下是一行linq语句:
order.OrderItems.SelectMany(item => item.Discounts.Where(discount => discount.IsActive));
发布真实代码和您尝试的解决方案。在Linq查询中我将如何做到这一点?如果你被困在某个地方,你可以先尝试一些东西,然后在这里问一个特定的问题