【发布时间】:2022-01-03 11:18:16
【问题描述】:
我有这个 linq 查询。如果可能的话,我需要为 Where 条件中的这个高亮 lambda 表达式寻找任何好的替代方案。我正在考虑使用合并条件 (??) 但无法进行查询。
.Where(p => p.Property== null ? true : p.Property.SubPropertyList.Contains(Item))
所以,我想从列表中获取属性为 null 或如果不为 null 则满足条件(Contains())的项目
【问题讨论】:
-
好吧,我会在这里使用
||而不是条件运算符,但除此之外,除了你已经拥有的东西之外,你还在寻找什么? -
也许正在寻找类似
p.PalletMission?.Destinations.Contains(currentGtpOrder.GtpStation.Node) ?? true的东西?不确定它是否比您所拥有的更有意义。 -
如何反转条件
.Where(p => p.PalletMission?.Destinations.Contains(currentGtpOrder.GtpStation.Node) != false),它涵盖了你的空和真情况 -
@JonSkeet 是的,但是你更喜欢什么? p.PalletMission == null ? true : p.PalletMission.Destinations.Contains(currentGtpOrder.GtpStation.Node) 或 p.PalletMission == null || p.PalletMission.Destinations.Contains(currentGtpOrder.GtpStation.Node) 在检查第二个条件时,当属性为空时,第二个不会创建空引用异常吗?
-
@InterStellaR 如果第一个表达式为真,则不会检查第二个表达式。