语句并在lambda表达式lambda中返回

问题描述 投票:1回答:2

在C#中,我试图通过验证乘客付款来验证是否有满载乘客的巴士:

bool busReadyToGo = true;
passengers.Any(p => p.paymentStatus == PaymentRegistryEnum.NotPaid ?  busReadyToGo = false; return busReadyToGo; : continue; );

因此,这应检查所有乘客的付款状态,如果遇到没有付款的one乘客,那么它就在那里停止并返回busReadytoGo = false。否则它继续迭代/过滤乘客,这意味着如果乘客没有付款,它将在以后返回真实。

不确定这是否是在Linq / lambda表达式中执行此操作的正确方法,因为我不断收到语法错误。

c# linq if-statement lambda condition
2个回答
2
投票

当它遇到在lambda表达式中返回true的第一个元素时,任何已经停止它的枚举。你只需要从Any获得结果

busReadyToGo = !passengers.Any(p => p.paymentStatus == PaymentRegistryEnum.NotPaid);

如果你看看Remarks section in docs,你可以阅读

一旦确定结果,就停止源的枚举。


2
投票

方法.Any将返回bool值。表达式中不需要包含if-Statement。这应该做得很好:

bool busReadyToGo = !passengers.Any(p => p.paymentStatus == PaymentRegistryEnum.NotPaid)
© www.soinside.com 2019 - 2024. All rights reserved.