Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C Linq对子列表的查询_C#_Linq - Fatal编程技术网

C# C Linq对子列表的查询

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

我有一个如下的类结构,其中我有一个OrderItems列表,每个项目都有一个折扣列表

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查询中我将如何做到这一点?如果你被困在某个地方,你可以先尝试一些东西,然后在这里问一个特定的问题