繁体   English   中英

C# LINQ 过滤器深层嵌套列表

[英]C# LINQ Filter deep nested list

我有一个基于包含其他列表的列表的结构。 我需要根据列表最深处的属性值过滤列表。

现在我正在这样做:

queryable = queryable
    .Include(x => x.Carriers)
    .ThenInclude(c => c.CarrierActions)
    .ThenInclude(ca => ca.Action)
    .ThenInclude(ac => ac.ActionFacts);

queryable = queryable
    .Where(x => x.Carriers.Any(
        carriers => carriers.CarrierActions.Any(
            carrieractions =>
                carrieractions.Action.ActionTypeId ==
                ActionTypeEnum.DosemeterCalculateDeepDose)));

我加入所需的表,然后根据顶部列表下方 3 个级别的 ActionTypeId 过滤它们。

首先,是否可以在 1 个步骤中执行此操作(包括使用连接进行过滤),其次,第二部分不起作用,因为我的列表变空了,但我确定该类型的操作会获得值.

顺便说一句,使用 .NET Core 2.0.3!

要回答你的第一部分,你可以这样做

queryable = queryable
    .Include(x => x.Carriers)
    .ThenInclude(c => c.CarrierActions)
    .ThenInclude(ca => ca.Action)
    .ThenInclude(ac => ac.ActionFacts)
    .Where(x => x.Carriers.Any(
        carriers => carriers.CarrierActions.Any(
            carrieractions =>
                carrieractions.Action.ActionTypeId ==
                ActionTypeEnum.DosemeterCalculateDeepDose)))

对于您的第二部分,它应该可以正常工作,请检查您的数据,因为这非常简单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM