2010-04-08 6 views
2

J'ai 6 zones de texte sur une page ASP et un bouton de recherche. Les utilisateurs peuvent effectuer une recherche en saisissant du texte dans l'une des zones de recherche. J'utilise Linq pour interroger ma base de données SQL Server et je peux écrire les requêtes. mais le problème est qu'il y a tellement de zones de texte que je vais devoir écrire beaucoup de requêtes. par exemple: l'utilisateur peut effectuer une recherche en saisissant des données dans les 6 zones de texte ou 5 zones de texte ou 4 ou 3 ou 2 ou 1. Vous pouvez voir combien de requêtes je dois écrire. Y at-il un moyen de coder ce genre de problème ou devrais-je simplement coder toutes les combinaisons possibles.plusieurs zones de recherche

Merci

Répondre

3

En général, quand je l'ai filtrage comme le vôtre je fais juste un chèque nul.

public List<TABLE> Filters(string a, string b, string c ...){ 
    var query = (from x in context.TABLE 
      where 
        (string.IsNullOrEmpty(a) || x.A ==a) && 
        (string.IsNullOrEmpty(b) || x.B ==b) && 
        (string.IsNullOrEmpty(c) || x.C ==b) 
       select x 
    ); 

    return query.ToList(); 
    } 

Avec rejoint

var baseQuery = (from x in context.TABLE 
      where 
        (string.IsNullOrEmpty(a) || x.A ==a) && 
      select x 
    ); 

    if(!string.IsNullOrEmpty(b)){ 
    baseQuery = (
     from item in baseQuery 
     join b in context.Bs on item.JoinMeCode equals b.JoinMeCode 
     select item 

    ); 
    } 
+0

semble correct, mais le problème est que j'ai plusieurs tables dans la base de données. en fonction de chaque zone de texte, je dois écrire des jointures. – user281693

+0

c'est encore possible, utilisez iqueryable. – Nix

+0

merci Nix, je l'ai eu. – user281693

Questions connexes