我在这个方法中写了这个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
}
在数据库中,部件链接到Ships,而不是Fleets。它是Fleet>船舶>零件
大约50%的时间都有效,我无法弄明白为什么。我不确定我是否是linq或其他东西。
我希望有人可以查看linq查询,并告诉我它是否在结构和语法方面看起来不错。
谢谢!
答案 0 :(得分:2)
您正在检查集合,而您应该检查它们是否为空:
var linkedModules = fleet.Ships
.Any(s => s.Parts
.Any(p => p.LinkedModules.Any());