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

Dotnet Discussion :

[Lambda]Problèmes avec les lambdas expressions


Sujet :

Dotnet

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 116
    Points : 63
    Points
    63
    Par défaut [Lambda]Problèmes avec les lambdas expressions
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            public List<Customers> GetCustomersLambda(string city)
            {
                NorthwindDataContext db = new NorthwindDataContext();
     
                var truc2 = db.Customers.Where(c => c.City.StartsWith(city)).Select(c=>new {c.ContactName,c.Country});
     
                return truc2.ToList();
            }
    je ne veux retourner que le pays avec linq c'est nickel mais ne peut-on le faire avec les lambdas expressions ?

    Voici l'erreur qu'il me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	1	Impossible de convertir implicitement le type 'System.Collections.Generic.List<AnonymousType#1>' en 'System.Collections.Generic.List<SLBindingDatabaseWeb.Customers>'	D:\Mes documents\Visual Studio 2008\Projects\SLBindingDatabase\SLBindingDatabaseWeb\Service1.svc.cs	33	20	SLBindingDatabaseWeb
    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            public List<Customers> GetCustomersLambda(string city)
            {
                NorthwindDataContext db = new NorthwindDataContext();
     
                var truc2 = db.Customers.Where(c => c.City.StartsWith(city)).Select(c=>new Customer{c.ContactName,c.Country});
     
                return truc2.ToList();
            }

  3. #3
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par sarapis Voir le message
    je ne veux retourner que le pays avec linq c'est nickel mais ne peut-on le faire avec les lambdas expressions ?
    Normal, si tu ne veux retourner que le pays, ta fonction GetCustomersLambda ne peux renvoyer une liste de Customer mais devrait renvoyer une list de string si ton pays est une string. Dans ton select, ne retourne pas le customer name si tu n'as besoin que du pays.

    Et si tu dois garder les deux, tu renvois une List non générique.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par neptune Voir le message
    Normal, si tu ne veux retourner que le pays, ta fonction GetCustomersLambda ne peux renvoyer une liste de Customer mais devrait renvoyer une list de string si ton pays est une string. Dans ton select, ne retourne pas le customer name si tu n'as besoin que du pays.

    Et si tu dois garder les deux, tu renvois une List non générique.
    ok dans ce cas je dois recrééer une nouvelle classe ne contenant que les champs dont j'ai besoin ?
    ex :
    nom, pays
    ...
    Je viens d'essayer mais il me jette encore avec une erreur de cast :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            public List<Personnes> GetCustomersLambda(string city)
            {
                NorthwindDataContext db = new NorthwindDataContext();
     
                var truc2 = db.Customers.Where(c => c.City.StartsWith(city)).Select(c=>new {c.ContactName,c.Country});
     
                return truc2.ToList();
            }

  5. #5
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Tu as lu ce que j'ai écris ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public List<Personnes> GetCustomersLambda(string city)
    {
        NorthwindDataContext db = new NorthwindDataContext();
        var truc2 = db.Customers.Where(c => c.City.StartsWith(city))
        .Select(c=>new Personnes{c.ContactName,c.Country});
             
        return truc2.ToList();
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par davcha Voir le message
    Tu as lu ce que j'ai écris ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public List<Personnes> GetCustomersLambda(string city)
    {
        NorthwindDataContext db = new NorthwindDataContext();
        var truc2 = db.Customers.Where(c => c.City.StartsWith(city))
        .Select(c=>new Personnes{c.ContactName,c.Country});
             
        return truc2.ToList();
    }

    J'ai bien lu et voilà le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            public List<Personnes> GetCustomersLambda(string city)
            {
                NorthwindDataContext db = new NorthwindDataContext();
     
                var truc2 = db.Customers.Where(c => c.City.StartsWith(city)).Select(c=>new Personnes{c.ContactName,c.Country});
     
                return truc2.ToList();
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public class Personnes
        {
            public string contactName { get; set; }
            public string Country { get; set; }
        }
    et l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur	1	Impossible d'initialiser un type 'SLBindingDatabaseWeb.Personnes' avec un initialiseur de collection, car il n'implémente pas 'System.Collections.IEnumerable'	D:\Mes documents\Visual Studio 2008\Projects\SLBindingDatabase\SLBindingDatabaseWeb\Service1.svc.cs	30	97	SLBindingDatabaseWeb
    si j'implémente l'interface :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        public class Personnes:IEnumerable
        {
            public Personnes()
            { }
     
            public string contactName { get; set; }
            public string Country { get; set; }
     
            #region IEnumerable Membres
     
            public IEnumerator GetEnumerator()
            {
                throw new NotImplementedException();
            }
     
            #endregion
        }
    Voici l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	1	'SLBindingDatabaseWeb.Personnes' ne contient pas de définition pour 'Add'	D:\Mes documents\Visual Studio 2008\Projects\SLBindingDatabase\SLBindingDatabaseWeb\Service1.svc.cs	30	98	SLBindingDatabaseWeb

  7. #7
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par neptune Voir le message
    tu renvois une List non générique.

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    C'est simplement ta syntaxe qui est mauvaise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=>new Personnes{c.ContactName,c.Country});
    Ceci devrait être en fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=>new Personnes{contactName=c.ContactName,Country=c.Country});

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    C'est simplement ta syntaxe qui est mauvaise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=>new Personnes{c.ContactName,c.Country});
    Ceci devrait être en fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=>new Personnes{contactName=c.ContactName,Country=c.Country});
    Merci beaucoup ca fonctionne nickel

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

Discussions similaires

  1. [RegEx] problème avec les expression régulières
    Par Medmidou dans le forum Langage
    Réponses: 1
    Dernier message: 02/10/2007, 19h35
  2. Problème avec les expression régulière
    Par fouyou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 04/07/2007, 19h19
  3. [C#] problème avec les expressions régulières
    Par luimême dans le forum C#
    Réponses: 1
    Dernier message: 13/06/2007, 16h44
  4. [VB.net][vs2005] Problème avec les expressions régulières
    Par zouhib dans le forum Windows Forms
    Réponses: 13
    Dernier message: 22/06/2006, 16h56
  5. Problème avec les expressions régulières
    Par Premium dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 18/06/2006, 17h41

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