IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linq Discussion :

Passer une variable a la clause where


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2003
    Messages : 53
    Par défaut Passer une variable a la clause where
    Bonjour tout le monde,

    Voila, j'aimerais pouvoir passer une variable à la clause where dans une requête linq ! qql un a une idée ?

    c'est quelque chose qui doit ressembler à ca : (mais comme ca ca ne marche pas !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    string where =  "li.Titre.StartsWith(filtre.Text) && li.CategorieCode == categorie.Code"
    var Liste = from li in dc.tb_
    where 
    orderby li.NbrEcoute descending
    select li;

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2003
    Messages : 53
    Par défaut
    je rectifie le code pour que ca soit plus clair

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     public List<BO> Get(string where)
    {
        var Liste = from li in dc.tb
        where 
        orderby li.MoyenneNote descending, li.NbrVote descending
        select li;
    }

  3. #3
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Le principe du linq est d'avoir un typage fort et donc d'éviter de manipuler des chaine de caractere...

    Il est possible par exemple de faire une méthode qui prendrait en argument une Expression Linq :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public List<BO> Get(Expression<Func<T, bool>> expression)
    {
        var Liste = from li in dc.tb.Where(expression)
        orderby li.MoyenneNote descending, li.NbrVote descending
        select li;
    }
    et tu pourrais appeler la méthode comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var res = Get(e => e.MoyenneNote > 5 && e.MoyenneNote < 10);
    Après si tu as réellement besoin de construire ta requête en dehors de la fonction il y a plusieurs possibilités :

    - Créer un arbre d'expression Linq
    - Utiliser du EQL
    - Utiliser System.Linq.Dynamic

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2003
    Messages : 53
    Par défaut
    Tout d'abord merci pour ta réponse, elle m'a mit sur deux très bonnes pistes pour réaliser ce que je voudrais .

    Toutefois je vais quand même te dire ce que je voudrais faire exactement:

    J'aimerais créer une fonction qui renvoie une liste de données et qui prends en paramètres Where et OrderBy. Quelle est la meilleure solution d'après toi ?
    Et merci encore.

  5. #5
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Pour l'orderby c'est un peu plus compliqué ... en effet un orderby peut être multiple et dans 2 directions différentes.

    Ce problème m'a longtemps posé des soucis et j'ai fini par prendre une approche type "string".

    Si tu utiliser System.Linq.dynamic (à télécharger) tu pourras faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public List<BO> Get(Expression<Func<T, bool>> expression, string orderby)
    {
        return dc.tb.Where(expression).OrderBy(orderby).ToList();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var res = Get(e => e.MoyenneNote > 5 && e.MoyenneNote < 10, "MoyenneNote descending, NbrVote descending");
    C'est la meilleur approche que j'ai trouvé, même si elle me satisfait pas beaucoup ...

    Je vais bientôt faire un article sur le sujet sur mon blog tu peux t'abonner si tu veux

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2003
    Messages : 53
    Par défaut
    OK je te remercie...

    je veux bien m'abonner mais je trouve aucun lien le permettant !

Discussions similaires

  1. [MySQL] Introduire une variable dans la clause where
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/08/2009, 12h39
  2. Réponses: 7
    Dernier message: 28/04/2009, 23h26
  3. [Custom Tags 1.2] Passer une variable comme valeur d'attribut d'un tag jsp
    Par Pi2 dans le forum Taglibs
    Réponses: 7
    Dernier message: 16/09/2005, 14h44
  4. Passer une variable entre deux fenêtres
    Par DeezerD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/08/2005, 09h52
  5. [Struts] Passer une variable dans l'url
    Par pilz dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/03/2005, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo