заявления и возврат в лямбда-выражении лямбда - PullRequest
1 голос
/ 30 апреля 2019

В C # я пытаюсь проверить, готов ли автобус, полный пассажиров, готов к работе, проверяя платежи пассажиров:

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

Таким образом, это должно проверить все статусы оплаты пассажиров, если он обнаружил, что one пассажир не заплатил, то тут же останавливается и возвращает busReadytoGo = false. в противном случае он продолжает выполнять итерацию / фильтрацию пассажиров, что означает, что позднее он вернет true, если пассажир не заплатил.

Не уверен, что это правильный способ сделать это в выражении Linq / lambda, потому что я продолжаю получать синтаксические ошибки.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2019

Метод. Любой уже вернет значение bool. Нет необходимости включать в выражение if-Statement. Это должно делать просто отлично:

bool busReadyToGo = !passengers.Any(p => p.paymentStatus == PaymentRegistryEnum.NotPaid)
2 голосов
/ 30 апреля 2019

Любой уже останавливает свое перечисление, когда встречает первый элемент, который возвращает true в лямбда-выражении.Вам просто нужно получить результат из Any

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

Если вы посмотрите на раздел Замечания в документе , вы можете прочитать

Перечисление источникаостанавливается, как только может быть определен результат.

...