Лямбда, потому что вы хотите оценить условное выражение для элемента n
.Добавленная версия (Sum(n > 7 ? n : 0)
) не может работать - n
нигде не определена (сообщение компилятора должно быть «Имя n не существует в текущем контексте»).
Лямбда может читаться как:
с учетом термина n
, если n
больше 7
return n
, иначе возвращаем 0
и затем суммируем по этой логике.
Re преимущество - во-первых, удобство - но также состав .Например, с LINQ-to-SQL я абсолютно ожидаю, что для выдачи чего-то вроде:
select sum(case when row.col > 7 then row.col else 0 end)
from sometable row
, конечно, может быть лучше использовать:
var sumOfgreaterThanSeven = numbers.Where(n => n > 7).Sum();
, который отобразитдо
select sum(row.col)
from sometable row
where row.col > 7
, что может более точно попасть в индекс