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 :

Exemple qui ne marche pas


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut Exemple qui ne marche pas
    Bonjour,

    toujours sur mon tutorial et j'essaie ce bout de code là :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                var p = Expression.Parameter(typeof(Customer), "c");
                var filter = (Expression<Func<Customer, bool>>)QueryExpression.Lambda(this.txtQueryFilter.Text, p);
                this.customerDataGridView.DataSource = this.db.Customers.Where(filter).ToList();

    Je suis sous VS2008 et donc en 3.5, et, le compilateur n'accepte pas ce code.
    J'imagine que la fonçon de faire a changé entre 3.0 et 3.5... mais je ne sais pas comment adapter.
    Quelqu'un pourrais m'aider ou m'orienter vers une doc qui m'aurait échapé ?

    merci

  2. #2
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Par défaut
    Que te dit le compilateur ?

    Le message d'erreur apporte souvent la solution

  3. #3
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Bonjour,

    Pour cela, il faut que tu utilises les méthodes d'extensions que tu trouveras dans le fichier Dynamic.cs dans l'archive téléchargeable à l'adresses suivante : http://msdn.microsoft.com/en-us/vcsharp/bb894665.aspx.

    Tu récupère le fichier Dynamic.cs qui est dans LinqSamples\DynamicQuery\DynamicQuery, tu l'ajoutes à ta solution, et le code que tu as écris précédement peut s'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.customerDataGridView.DataSource = this.db.Customers.Where(this.txtQueryFilter.Text).ToList();
    EDIT : N'oublies pas de rajouter le bloc using System.Linq.Dynamic;

  4. #4
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    Ok, merci Paul Musso

    ça fonctionne effectivement.

    Par contre, c'est étonnant qu'il failles rajouter une classe comme ça. Pourquoi n'est-elle pas ou plus dans le FW 3.5 ?

    N'y aurait-il pas une autre façon de faire qui ne nesséciterait pas d'ajouter cette classe ?



    Citation Envoyé par DroP Voir le message
    Que te dit le compilateur ?

    Le message d'erreur apporte souvent la solution
    le message était :

    The type arguments for method 'System.Linq.Queryable.Where<TSource>(System.Linq.IQueryable<TSource>, System.Linq.Expressions.Expression<System.Func<TSource,bool>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

  5. #5
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    En regardant les sources de la méthode d'extension Where sur les objets de type IQueryable, tu peux extraire la méthode d'extension ainsi que les méthodes dont elle fait référence.

    Cependant, la logique qui permet de transformer ton prédicat (txtQueryFilter.Text) en expression est contenu dans la méthode DynamicExpression.ParseLambda du fichier Dynamic.cs. Et elle fait appel à pas mal de fonctions. Tu peux très bien juste extraire les méthodes nécessaires.

    A ma connaissance, je ne connais pas d'objet ou méthode dans le framework 3.5 qui permette de construire une expression directement à partir d'une chaine de caractère.

  6. #6
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    Ok... :-/

    Et bien merci pour ces explications et cette aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exemple simple qui ne marche pas :(
    Par fdocteur dans le forum CUDA
    Réponses: 12
    Dernier message: 25/08/2010, 01h15
  2. Filtre de Kalman (exemple qui ne marche pas)
    Par elraton dans le forum OpenCV
    Réponses: 2
    Dernier message: 21/05/2010, 13h22
  3. Exemple qui marche et qui ne marche pas
    Par Chauve souris dans le forum Visual Studio
    Réponses: 3
    Dernier message: 14/08/2009, 23h12
  4. Base de données d'exemple qui ne marche pas
    Par kedare dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 29/11/2007, 04h21
  5. Réponses: 9
    Dernier message: 07/05/2003, 13h57

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