[英]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.