Linq Where过滤

bqf10yzr  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(116)

查询结果过滤有问题。

public class LinkTabProductCategory
{
    [Key]
    public int Id { get; set; }

    public int ProductId { get; set; }
    [JsonIgnore]
    public Product Product { get; set; }

    public int CatalogSubSectionId { get; set; }
    public CatalogSubSection CatalogSubSection { get; set; }
}

var result = DataContext.Product                    
                .Include(o => o.Offers)
                        .ThenInclude(p => p.Prices)
                            .ThenInclude(t => t.Type)
                .Include(p => p.Brand)
                .Include(tb=>tb.LinkTabProductCategories)
                .Where( p=>p.LinkTabProductCategories **???** == id)
                .ToList();

我需要获得产品列表,其中有:链接选项卡产品类别.目录子章节Id == id

***更新***这是查询结果列表:

{
    "ProductId":"",
    "UID1C": "",
    "Name": "",
    "Article": "",
    "FactoryNumber": "",
    "Brand": {
        "BrandId": "",
        "UID1C": "",
        "Name": ""
    },
    "Offers": []       
    ,
    "LinkTabProductCategories": [
        {
            "Id": 1,
            "ProductId": 2,
            "CatalogSubSectionId": 1,
            "CatalogSubSection": null
        }
    ]
},
{},
{}.....

如何仅获取“CatalogSubSectionId”== 1的产品

q3qa4bjr

q3qa4bjr1#

在条件.Where( p=>p.LinkTabProductCategories **???** == id)是一个列表中,因此必须在列表中搜索CatalogSubSectionId满足给定条件的任何项目。
您可以使用Any和这个列表来给予所需的 predicate 。

.Where(p => p.LinkTabProductCategories.Any(c => c.CatalogSubSectionId == id))
brtdzjyr

brtdzjyr2#

使用方法Any(predicate)-返回true,任何元素满足条件 predicate :
其中(p =〉p.链接选项卡产品类别.任意(c =〉c.目录子章节Id == id))

相关问题