2010-04-07 6 views
0

J'ai plusieurs colonnes avec lesquelles je souhaite effectuer une recherche. Mon code pourrait ne pas avoir passé quelque chose pour une colonne donnée à rechercher. Donc, pour l'exemple ci-dessous, le nom ou le prénom peut être une chaîne vide. Chaque fois que je lance une recherche sur une colonne avec une chaîne vide, cela gâche la requête. J'ai corrigé le problème en vérifiant si c'est une chaîne vide et en ne demandant pas si c'est le cas. Cependant, j'ai beaucoup de colonnes à rechercher contre ce qui serait beaucoup de si/thens et rendre les choses en désordre. Des conseils sur la meilleure façon de mettre en œuvre?requête linq to xml avec des paramètres vides potentiels passés

refinedresult = From x In theresult _ 
         Where x.<lastname>.Value.ToLower.Contains(LastName.ToLower.Trim) Or _ 
         x.<givenname>.Value.ToLower.Contains(FirstName.ToLower.Trim) Or    _ 
         Select x 

Répondre

0

Vous pouvez construire une méthode d'extension du type de x qui effectue la comparaison et retourne un bool. La méthode doit prendre la chaîne de référence à comparer. Si x est nul, il suffit de renvoyer false à partir de la méthode d'extension.

La possibilité d'appeler une méthode d'extension sur une référence null et de gérer la situation avec élégance est vraiment puissante.

+0

Je ne l'ai pas fonctionne très bien mais je pense que vous me mettez sur la bonne voie. Je vous remercie. –