Я знаю, что Func<>
s не может быть неявно набирается непосредственно через var
ключевого слова, хотя я надеялся, что я мог бы сделать следующее назначение предиката:Как назначить Func <> с помощью условного тернарного оператора?
Func<Something, bool> filter = (someBooleanExpressionHere)
? x => x.SomeProp < 5
: x => x.SomeProp >= 5;
Однако я получаю ошибку cannot resolve the symbol, 'SomeProp'
На данный момент я прибегнул к более громоздкому назначению if branch
, которое не выглядит таким элегантным.
Func<Something, bool> filter;
if (someBooleanExpressionHere)
{
filter = x => x.SomeProp < 5;
}
else
{
filter = x => x.SomeProp >= 5;
}
Я что-то пропустил, или мне нужно будет придерживаться назначения if-branch?
Вы пытались добавить скобки в разных местах? например '(x => x.SomeProp <5)' –
Компилятор, вероятно, не знает, какой тип является лямбда-переменной x. Почему бы не поместить два выражения в отдельные переменные, а затем назначить одну из них переменной фильтра, используя тернарный оператор? –
@AlexMDC: Сделал. Не работает. –