Depuis que j' utilise Linq to SQL, je crois bien que c'est la première fois que je me suis retrouvé coincé avec un souci de syntaxe. Mon objectif était tout simple : retourner une liste de String et dans le cas d'une String vide mettre un texte de remplacement. Rien de très compliqué en l' état... du moins en apparence, car en codeur .net soucieux de bien utiliser son framework, j'ai tenté d' écrire le code suivant :
En C#:
... select String.IsNullOrEmpty(Nom) ? _NomInconu : Nom
ou Vb:
... select IIf(String.IsNullOrEmpty(Nom), _ _NomInconu, _ Nom)
Avec "_NomInconnu" étant une constante de substitution au texte vide (constante ou variable static, le résultat ici est le même).
Et là, c'est le drame...
Gros plantage de l'application et message peu explicite disant que mon expression ne peut être traduite pour SQL. En fait après quelques tests j'ai constaté que l' erreur venait de l' usage de la méthode IsNullOrEmpty. Alors que j' utilises couramment cette méthode pour faire du filtrage (where) il est impossible de l'utiliser dans le select si on y adjoint l'utilisation de IIF...
Donc pour obtenir un code fonctionnel il faudra écrire :
C#:
... select String.Empty == Nom ? _NomInconu : Nom
Vb:
... select IIf(String.Empty = Nom, _ _NomInconu, _ Nom)
... et dire que j' ai provoqué cette erreur en voulant bien faire :(