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 :

Comparer deux objets dans une liste [Débutant]


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut Comparer deux objets dans une liste
    Bonjour,

    j'ai un petit problème de conception qui me pose de gros soucis.

    J'ai une classe de base company ayant une interface Icompany avec des propriétés a,b,c,d,e,f,g,h,i...
    et une classe companyA ayant une propritété z et companyB ayant une propriété y qui spécialisent company

    l'utilisateur dans son interface peut ajouter plusieurs companyA et/ou companyB
    Ainsi je dois récupérer une liste de company pouvant être spécialisé de companyA et companyB et lorsque je sauvegarde je ne dois pas enregistrer à la même place les companyA et companyB

    le but étant d'avoir une list générique acceptant les deux objets companyA et companyB et de pouvoir comparer dans ma liste les objets companyA et companyB afin de pouvoir sauvegarder mes objets aux bon endroits

    Est-ce possible ? sur le net je trouve le moyen d'avoir des listes d'employés et de les comparer entre eux. Ici c'est la même chose mais je ne veux pas perdre les propritétés de companyA et companyB

    Mille merci pour votre aide précieuse

  2. #2
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Une solution tote simple (faute de mieux comprendre ton besoin)

    Tu cree une liste d'objet
    Tu cree un compareur d'objet
    Dans ton compareur tu teste la nature des objet et tu fais des comparaisons appropriées
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  3. #3
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Si je comprends bien, tu as une liste de type List<Company>.

    Si tu veux des sous listes avec les CompanyA ou les CompanyB, tu peux faire ça :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var CompanyAList = list.Where(d => d is CompanyA);
     
    var CompanyBList = list.Where(d => d is CompanyB);
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  4. #4
    Nouveau membre du Club Avatar de Léonard Labat
    Homme Profil pro
    Consultant .NET
    Inscrit en
    Juillet 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 17
    Points : 33
    Points
    33
    Par défaut
    Et ça marche aussi avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.OfType<CompanyA>();
    (que je trouve plus sexy)

  5. #5
    Membre actif
    Homme Profil pro
    Chef de Projet
    Inscrit en
    Décembre 2012
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef de Projet
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 113
    Points : 260
    Points
    260
    Par défaut
    Bonsoir,

    Autre possibilité pour tester le type de ta compagnie sans créé de nouvelle liste : utiliser l'instruction "is" et "as".

    exemple :

    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
     
    foreach(ICompany c in list)
    {
       if (c is CompanyA)
       {
          CompanyA cA = c as CompanyA;
          // Traitement spécifique aux instances de CompanyA
       }
     
       if (c is CompanyB)
       { 
         CompanyB cB = c as CompanyB;   
         // Traitement spécifique aux instances de CompanyB
       }
    }

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

Discussions similaires

  1. Comment Manipuler des objets dans une liste de type TList ?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 15h40
  2. Réponses: 1
    Dernier message: 08/09/2006, 17h21
  3. récupérer un objet dans une liste chainée
    Par marsuwhite dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 14h05
  4. insertion d'objets dans une liste chainee
    Par mathher dans le forum C++
    Réponses: 8
    Dernier message: 20/04/2006, 16h28
  5. [Swing][JList] Placer un Objet dans une liste
    Par Invité dans le forum Composants
    Réponses: 1
    Dernier message: 17/02/2006, 10h31

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