Como posso atribuir um Func <> condicionalmente entre lambdas usando o operador ternário condicional?
Geralmente, ao usar o operador condicional, aqui está a sintaxe:
int x = 6;
int y = x == 6 ? 5 : 9;
Nada extravagante, bem direto.
Agora, vamos tentar usar isso ao atribuir um Lambda a um tipo Func. Deixe-me explicar:
Func<Order, bool> predicate = id == null
? p => p.EmployeeID == null
: p => p.EmployeeID == id;
Essa é a mesma sintaxe, edevemos trabalhos? Direito? Por alguma razão, isso não acontece. O compilador fornece essa boa mensagem enigmática:
Erro 1 O tipo de expressão condicional não pode ser determinado porque não há conversão implícita entre 'expressão lambda' e 'expressão lambda'
Eu então fui em frente e mudei a sintaxe e dessa maneirafez trabalhos:
Func<Order, bool> predicate = id == null
? predicate = p => p.EmployeeID == null
: predicate = p => p.EmployeeID == id;
Só estou curioso para saber por que não funciona da primeira maneira?
(Nota: acabei não precisando desse código, pois descobri que, ao comparar um valor int contra nulo, você apenas usa object.Equals)