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)

questionAnswers(3)

yourAnswerToTheQuestion