在 C# 中使用 linq 过滤列表中的列表

Filter a list within a list using linq in C#

我想使用 Linq 过滤 C# 列表中的列表

 var  catalogs = await _context.MerchantCatalogs
            .Include(x => x.merchantDiscounts)
            .ToListAsync();

我有一个商品列表,里面有一个折扣列表,我需要获取特定用户的折扣

MerchantCatalogs 有一个名为 discount 的字段,它的折扣类型为 (1,2) 我只需要在类型为 2

的列表中获得折扣
public class MerchantCatalogs
{
    int ID;
    public ICollection<MerchantDiscount> merchantDiscounts { get; set; }
}
public class MerchantDiscount
{
    int id;
    int type;
}

如何获取内部列表为 MerchantDiscount = 1 的列表

尝试使用 Where 子句过滤结果:

var  catalogs = await _context.MerchantCatalogs
        .Include(x => x.merchantDiscounts.Where(discount => discount.type == 2))
        .ToListAsync();

如果您只想要有任何类型 2 折扣的商家

var  catalogs = await _context.MerchantCatalogs
        .Include(x => x.merchantDiscounts.Where(discount => discount.type == 2))
        .Where(merchant=> merchant.merchantDiscounts.Any())
        .ToListAsync();