En général, lorsqu'on utilise l'opérateur conditionnel, voici la syntaxe :
int x = 6;
int y = x == 6 ? 5 : 9;
Rien d'extraordinaire, c'est assez simple.
Maintenant, essayons de l'utiliser en assignant une Lambda à un type Func. Laissez-moi vous expliquer :
Func<Order, bool> predicate = id == null
? p => p.EmployeeID == null
: p => p.EmployeeID == id;
C'est la même syntaxe, et devrait travail ? Pas vrai ? Pour une raison quelconque, ça ne marche pas. Le compilateur donne ce joli message cryptique :
Erreur 1 Le type d'expression conditionnelle ne peut être déterminé car il n'y a pas de conversion implicite entre 'expression lambda' et 'expression lambda'.
J'ai ensuite modifié la syntaxe et de cette façon, il y a a fait travail :
Func<Order, bool> predicate = id == null
? predicate = p => p.EmployeeID == null
: predicate = p => p.EmployeeID == id;
Je suis juste curieux de savoir pourquoi ça ne marche pas de la première façon ?
(Note annexe : je n'ai finalement pas eu besoin de ce code, car j'ai découvert que pour comparer une valeur int à null, il suffit d'utiliser object.Equals).