Wie kann ich unter Verwendung des bedingten ternären Operators eine Funktion <> zwischen Lambdas zuweisen?

ei Verwendung des bedingten Operators lautet die Syntax im Allgemeinen wie folgt:

int x = 6;
int y = x == 6 ? 5 : 9;

Nichts Besonderes, ziemlich direkt.

Nun versuchen wir, dies zu verwenden, wenn wir einem Func-Typ ein Lambda zuweisen. Lassen Sie mich erklären

Func<Order, bool> predicate = id == null
    ? p => p.EmployeeID == null
    : p => p.EmployeeID == id;

Das ist die gleiche Syntax undsollt Arbeit? Richtig? Aus irgendeinem Grund ist das nicht der Fall. Der Compiler gibt diese nette kryptische Nachricht aus:

Error 1 Der Typ des bedingten Ausdrucks kann nicht bestimmt werden, da keine implizite Konvertierung zwischen 'Lambda-Ausdruck' und 'Lambda-Ausdruck' erfolgt.

Ich ging dann voran und änderte die Syntax und auf diese Weise es did Arbeit

Func<Order, bool> predicate = id == null
    ? predicate = p => p.EmployeeID == null
    : predicate = p => p.EmployeeID == id;

Ich bin nur neugierig, warum es so nicht funktioniert?

(Randnotiz: Ich brauchte diesen Code letztendlich nicht, da ich herausfand, dass Sie beim Vergleichen eines int-Werts mit null einfach object.Equals verwenden.)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage