2010-07-06 4 views
0

Je voudrais faire une fonction de recherche qui prend indata à partir de 5 zones de texte, Nom, sexe, ID, catégorie animale et animal. Les diffrances entre la catégorie animale et l'animal est par exemple. catégorie animale = mammifère et animal = ours. Donc, ceux-ci sont facultatifs pour l'utilisateur, quand il/elle frappe le bouton, il devrait rechercher les paramètres donnés. Les données sont sauvegardées dans une liste générique avec le type Animal. par exemple. ListanimalCollectionFonction de recherche avec indata inconnue

j'ai essayé d'utiliser LINQ, ma requête ->

ienumerable<Animal> result= 
    from a in animalCollection where a.Name== myParameterName 
    && 
    a.Gender == myParameterGender 
    select a; 

le problème vient lorsque l'utilisateur veut avoir un ou plus de deux paramètres cus je ne sais pas comment faire la requête en fonction de entrée de l'utilisateur. Est-ce que je dois faire un tas d'instructions if pour vérifier les entrées de l'utilisateur? J'espère qu'il y a un autre moyen!

Je vous demande de l'aide avec des experts intelligents! J'espère que je me suis fait assez clair.

Daniel, sweden

Répondre

2

En supposant que vos paramètres sont alors toutes les chaînes que vous pourriez faire quelque chose comme ceci:

var result = from a in animalCollection 
      where (string.IsNullOrEmpty(myParameterName) || a.Name == myParameterName) 
       && (string.IsNullOrEmpty(myParameterGender) || a.Gender == myParameterGender) 
       && (string.IsNullOrEmpty(myParameterID) || a.ID == myParameterID) 
       && (string.IsNullOrEmpty(myParameterCategory) || a.Category == myParameterCategory) 
       && (string.IsNullOrEmpty(myParameterAnimal) || a.Animal == myParameterAnimal) 
      select a; 
+0

LukeH, merci de vous respons rapide. J'ai essayé votre requête et cela ne fonctionne pas quand l'un des paramètres est vide. par exemple, name = "" et gender = female. Je suis en dehors des tentatives, essayant de comprendre cela depuis un certain temps maintenant. Daniel – Daniel

+0

@Daniel: Cela devrait fonctionner dans cette situation. Ce qui se produit? Avez-vous une erreur? Est-ce que la requête ne renvoie aucun résultat? Des résultats inattendus? – LukeH

+0

Vous êtes totalement génial! Ça a vraiment marché! Je suis si content! J'ai passé deux jours à essayer une bonne solution! C'était exactement ce que je cherchais. Je suis désolé d'accuser votre solution d'avoir tort, j'en ai essayé tellement. C'est très bien !! Juste quelques lignes! Impressionnant! Alors maintenant, la fonction de recherche fonctionne très bien grâce à vous! Juste une question à propos de cette requête ... par exemple. (string.IsNullOrEmpty (myParameterName) || a.Name == myParameterName) Comment fonctionne cette requête? Si string.IsNullOrEmpty obtient une correspondance en premier, alors il ne devrait pas rechercher le nom? Ai-je raison? Si faux, alors cherchez le nom ... – Daniel

Questions connexes