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

C# Discussion :

problème avec except


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Par défaut problème avec except
    Bonjour,
    Je voudrais extraire la liste des clients qui n'ont pas de règlement avec la méthode except mais le résultat retourne tous les clients !!

    Rq : la liste cl_actif return 6 client mais la liste res contient 600 le meme nombre du liste cl_tous avec les client existant dans cl_actif

    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
    18
    19
    20
    21
    22
    23
    24
    25
     
                cl_actif .Clear();
                cl_tous.Clear();
                cl_actif .AddRange((from a in datacontext.reglements
                               from b in datacontext.Clients
                               where a.Id_client == b.Id
                               select new client_ina
                               {
                                   code = b.code,
                                   nom = b.Nom,
                                   deleg = b.Delegation,
                                   tel = b.Tel,
                               }).AsEnumerable().Distinct(new Comparer_client()));
     
                cl_tous.AddRange((from b in datacontext.Clients
                                  select new client_ina
                                  {
                                      code = b.code,
                                      nom = b.Nom,
                                      deleg = b.Delegation,
                                      tel = b.Tel,
                                  }).ToList());
                IEnumerable<client_ina> res = cl_tous.Except(cl_actif).ToList();
     
                dataGrid1.ItemsSource = res;
    Merci de m'aider

  2. #2
    Membre confirmé Avatar de Klivor
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 143
    Par défaut
    Un peut plus d'explication stp . C'est pas évident de comprendre le problème la .

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Par défaut
    Citation Envoyé par Klivor Voir le message
    Un peut plus d'explication stp . C'est pas évident de comprendre le problème la .
    la liste cl_actif contient la liste des client qui ont des règlements,
    la liste cl_tous contient la liste de tous les client,
    je veux que la liste res contient la liste des clients qui n'ont pas des règlements,

    J’ai utilisé la méthode except mais la liste res a pris tous les éléments de la liste cl_tous !!

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Et avec un appel à except en repassant une instance IEqualityComparer ? A la manière de ton Distinct ?!

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Et avec un appel à except en repassant une instance IEqualityComparer ? A la manière de ton Distinct ?!
    Exactement! C'est pas parceque deux objets ont les mêmes valeurs qu'ils sont égaux pour la fonction Equals! Soit tu définis un EqualityComparer, soit tu redéfinis Equals

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Par défaut
    Citation Envoyé par PitMaverick78 Voir le message
    Exactement! C'est pas parceque deux objets ont les mêmes valeurs qu'ils sont égaux pour la fonction Equals! Soit tu définis un EqualityComparer, soit tu redéfinis Equals
    plus d'explication stp et Merci;

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Comparaison par défaut sur référence. Si tes objets ont des codes identifiants communs, ils n'en sont pas moins différents par défaut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Client c1 = new Client(42);//42 comme identifiant
    Client c2 = new Client(42);
     
    bool same = c1 == c2; // vaut false, références différentes. 
    bool same2 = c1.Equals(c2); // vaut false, références différentes.
    Si tu redéfinis Equals, comme remarqué très justement par PitMaverick78, tu auras un fonctionnel tel que désiré. Réutiliser le comparer aura le même effet.

    C'est le traitement par référence des objets, différent du traitement par valeur des types simples.

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Et avec un appel à except en repassant une instance IEqualityComparer ? A la manière de ton Distinct ?!
    j'ai pas de redondance dans la mm liste,
    je peux faire IEqualityComparer entre deux liste ???
    et pourquoi la methode except n'a pas fonctionné ??

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

Discussions similaires

  1. Problème avec exception
    Par sirjown dans le forum NetBeans
    Réponses: 9
    Dernier message: 21/10/2014, 13h35
  2. Réponses: 4
    Dernier message: 18/10/2009, 18h36
  3. Problème avec EXCEPT
    Par kissmeimshy dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/06/2009, 17h36
  4. Problème avec exception
    Par bor1s dans le forum ASP.NET
    Réponses: 3
    Dernier message: 06/02/2008, 09h25
  5. Problème avec exception lors d'un SplashScreen
    Par yashiro41281 dans le forum Langage
    Réponses: 5
    Dernier message: 10/09/2007, 22h30

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