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 :

Ajout de la fonction LIKE dans les Expressions de LINQ


Sujet :

Linq

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Ajout de la fonction LIKE dans les Expressions de LINQ
    Bonjour,

    j'ai crée une SortableBindingList<T> qui surcharge BindingList<T>
    IBindingListView et je voudrais ajouter le filtrage.

    Dans le fonction qui filtre j'appelle ma liste comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    filterPredicate = DynamicLinq.ParseToFunction<T, Boolean>(filterClause);
    foreach (T element in 
                       original.Where<T>(filterClausePredicate)) 
                       Items.Add(element);

    où:
    filterClause est la chaine qui contient "la requête"
    filterClausePredicate est de Type Func<T,bool> que je construit

    mon problème est que les expressions de System.Linq.Expressions ne contiennent pas le Like pour pouvoir faire A LIKE %B% donc je dois l'ajouter moi même.
    j'ai fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static Expression<Func<String, String, bool>> Like() { return (item, search) => item.ToLower().Contains(search.ToLower()); }
    static Expression ELike(Expression lhs, Expression rhs)
            {
                     return Expression.Call(typeof(PostfixExpressionToLambda<>), "Like", new Type[] { typeof(Expression), typeof(Expression }, new Expression[] { lhs, rhs});      
            }
    quand j'execute j'ai l'erreur suivante:
    Like' sur le type PostfixExpressionToLambda`1[T]' n'est compatible avec les arguments fournis
    Quelqu'un pourrait me dire où est l'erreur?
    Merci d'avance

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    un "Name LIKE '%B%' " c'est équivalant à : Where(e=>e.Name.Contains("B"))

Discussions similaires

  1. [AC-2003] fonction non disponible dans les expressions
    Par novice06 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/04/2011, 18h35
  2. Fonction nettoyage dans les antivirus
    Par Safaritn dans le forum Sécurité
    Réponses: 4
    Dernier message: 26/04/2007, 19h44
  3. Réponses: 2
    Dernier message: 16/11/2006, 15h00
  4. Réponses: 4
    Dernier message: 02/06/2004, 11h19
  5. Bug dans les expressions régulières ?
    Par SergioF dans le forum Linux
    Réponses: 8
    Dernier message: 12/05/2004, 15h14

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