Magazine Internet

[Linq2SQL] Select+IIf+IsNullOrEmpty == cata

Publié le 10 février 2009 par Jeremy.jeanson

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 :(


Retour à La Une de Logo Paperblog

A propos de l’auteur


Jeremy.jeanson 1573 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte