使用 LINQ 筛选出不需要的对象

本文关键字:对象 不需要 LINQ 筛选 使用 | 更新日期: 2023-09-27 18:37:00

我用这种方法编写了这个 linq 查询,这样我就可以过滤掉舰队中没有链接模块(存储、生命支持、医疗舱等)的任何船只。

如果提供的队列有任何带有链接模块的船舶,则返回 true

    public bool FleetWithShipsWithLinkedModules(Fleet fleet)
    {
        var linkedModules = fleet.Ships.Any(
                                        s => s != null &&
                                        s.Parts != null &&
                                        s.Parts.LinkedModules != null);
        return linkedModules;
    }

用法:

if (FleetWithShipsWithLinkedModules(fleet))
{
   ...do stuff
}

在数据库中,零件链接到船舶,而不是舰队。它去 舰队> 船舶>零件

它大约 50% 的时间有效,我不知道为什么。 我不确定是linq还是别的什么。

我希望有人可以看看linq查询,并让我知道它在结构和语法上是否看起来不错。

谢谢!

使用 LINQ 筛选出不需要的对象

您正在检查集合为 null,而您应该检查它们是否为空:

var linkedModules = fleet.Ships
                         .Any(s => s.Parts
                                    .Any(p => p.LinkedModules.Any());