если у меня есть этот код сегодня для обнаружения суммарного итога с помощью LINQ:
return (MyArray.Sum(r => r.Trips);
и я хочу только включать itms где r. CanDrive == верный.
можно ли добавить условие в единственное linke лямбда-выражение? как Вы сделали бы это
Вы можете связать два бита LINQ вместе следующим образом:
return MyArray.Where(r => r.CanDrive).Sum(r => r.Trips);
Ответ Дэвида полностью правильный, но другой альтернативой может быть использование условного оператора:
return MyArray.Sum(r => r.CanDrive ? r.Trips : 0);
Лично я бы использовал форму Where
, но я решил представить альтернативу...
(Еще одной альтернативой было бы создание собственного метода Sum
, который принимал бы и предикат, и проекцию, но я думаю, что это уже перебор)