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 :

trier une liste d'objets


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut trier une liste d'objets
    Bonjour,
    J'ai une liste d'objets (Indicateur) et je voudrais la trier selon un paramètre de ma classe Indicateur.

    Je vous mets ma classe indicateur :
    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
    26
    27
    28
    29
    30
    31
    amespace ArbreGenerique
    {
        class Indicateur
        {
            string m_variable;
            double m_seuil;
            double m_valeur;
     
            public Indicateur(string variable, double seuil, double valeur)
            {
                this.m_variable = variable;
                this.m_seuil = seuil;
                this.m_valeur = valeur;
            }
     
            public string Variable
            {
                get { return m_variable; }
            }
     
            public double Seuil
            {
                get { return m_seuil; }
            }
     
            public double Valeur
            {
                get { return m_valeur; }
            }
        }
    }
    J'ai remplis ma liste au fur et à mesure que je calculais un nouvel indicateur.

    Maintenant je voudrais la trier selon le paramètre m_valeur. Mais je ne vois pas comment faire.

    Si quelqu'un peut m'aider, je lui serais très reconnaissant.

    Merci

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut
    C'est bon j'ai résolu mon problème. J'ai créer ma propre fonction de tri.
    Ca donne ça:
    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
    26
    27
    28
    29
    30
    31
    32
    public void TriListIndicateur(List<Indicateur> liste)
            {
                int ndebut = 0;
                int nfin = liste.Count - 1;
                while (ndebut < nfin)
                {
                    int debut = ndebut;
                    int fin = nfin;
                    ndebut = liste.Count;
                    for (int i = debut; i < fin; i++)
                    {
                        if (liste[i].Valeur > liste[i + 1].Valeur)
                        {
                            Indicateur tempIndicateur = liste[i];
                            liste[i] = liste[i + 1];
                            liste[i + 1] = tempIndicateur;
                            if (i < ndebut)
                            {
                                ndebut = i - 1;
                                if (ndebut < 0)
                                {
                                    ndebut = 0;
                                }
                            }
                            else if (i > nfin)
                            {
                                nfin = i + 1;
                            }
                        }
                    }
                }
    }

  4. #4
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Ce n'est pas la meilleure des solutions. Effectivement, elle fonctionne, mais il y a mieux : utiliser IComparer, comme en parle le topic donné par Guulh

  5. #5
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    rien de tel qu'un bon vieux tri pour s'amuse

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

Discussions similaires

  1. Trier une liste d'objets
    Par christophertux dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 04/08/2009, 16h49
  2. Réponses: 5
    Dernier message: 22/02/2009, 18h44
  3. Réponses: 3
    Dernier message: 27/01/2009, 18h17
  4. trier une liste d'objets dans une ArrayList
    Par sandrine49 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 13/10/2008, 08h59
  5. Trier une liste d'objets d'après un champ des objets
    Par gids01 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 02/07/2007, 09h52

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