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

Windows Forms Discussion :

[C#]Comment trier une collection?


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut [C#]Comment trier une collection?
    salut
    je voudrais trier une collection en fonction d'un champ
    En fait la collection est composé d'objets éleve.
    Chaque éleve possède un ideleve et une moyenne.
    Je voudrais trier la collection juste par la moyenne.

    J'ai utiliser la fonction sort mais je ne sait pas vraiment quoi mettre comme paramètre.
    Qu'elqu'un pourrait m'aidez?

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Tu peux implémenter l'interface IComparable sur ton objet métier pour que, quand tu appelleras la méthode Sort(), le tri soit effectué comme tu le souhaites.

    Si tu utilises le Framework 2.0, tu peux aussi passer par ceci.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    en fait je ne comprend pas trop comment marche le IComparer.
    Tu n'aurai pas un exemple?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    classementcoll.Sort(System.Collections.IComparer comparer);

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Points : 269
    Points
    269
    Par défaut
    je te donne ce que j'utilise. La fonction de comparaison est a définir selon tes besoin. moi je comapre des iAdresse de mes objets DP.

    Les "adresse" et "iAdresse" sont en fait les même champ, sauf qu'un coup je prend l'attribut et l'autre la propriété...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public abstract class DP : IComparable
    { 
    ...
     
    public int CompareTo(Object obj)
    {
           if (this._iAdresse > ((DP)obj).adresse) return 1;
           else if (this._iAdresse == ((DP)obj).adresse) return 0;
           else return -1;
    }
     
    ...
    }
    Ensuite je récupere un IEnumerator pour construire une ArrayList et c'est cette arrayList que je vais trier.
    L'utilisation du IEnumerator n'est pas necessaire pour toi peut être. A toi de voir comment construire ton ArrayList.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private ArrayList RecupereTableauTrier(IEnumerator EnumerationDP)
    {
         ArrayList tableauARetourner = new ArrayList();
         while (EnumerationDP.MoveNext())        
                   tableauARetourner.Add(EnumerationDP.Current);
     
         tableauARetourner.Sort();
          return tableauARetourner;
    }

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    cette solution n'est pas plus longue à charger qu'avec le IComparer dans le cas d'un array avec un très grand nombre d'objet?

  6. #6
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par Cube55
    cette solution n'est pas plus longue à charger qu'avec le IComparer dans le cas d'un array avec un très grand nombre d'objet?

    non, je ne pense pas, à part que le monsieur, il recré un tableau.

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    ok c'est bon en fait merci a vous =)

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

Discussions similaires

  1. Comment trier une collection avant de l'afficher ?
    Par piloupy dans le forum Struts 1
    Réponses: 10
    Dernier message: 04/05/2007, 08h51
  2. Réponses: 7
    Dernier message: 10/05/2006, 11h15
  3. Comment trier une table paradox dans un Ttable sur un Dbgrid
    Par amireve dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/12/2005, 19h28
  4. Comment trier une DBGRID en cliquant sur une colonne
    Par sessime dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/10/2004, 16h18
  5. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20

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