簡體   English   中英

針對子列表的 C# Linq 查詢

[英]C# Linq Query against sub list

我有一個如下的類結構,其中我有一個 OrderItems 列表,每個項目都有一個 Discounts 列表

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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM