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 :

Comment créer et trier une liste avec plusieurs colonnes ?


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Comment créer et trier une liste avec plusieurs colonnes ?
    Bonjour,

    Je souhaiterais créer une liste avec plusieurs colonnes et pouvoir la trier. Par exemple ma liste contiendrait une colonne nom de famille, une colonne prénom et une colonne année de naissance. D'abord il faudrait trier la liste par année de naissance, et si plusieurs personnes ont la même année de naissance alors il faudrait la trier par nom de famille puis par prénom.

    Si vous avez une idée pour pouvoir faire cela, merci d'avance pour votre aide !

    Bonne journée à tous !

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx
    Ce lien va pourvoir t'aider je pense.

  3. #3
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    si ton list est de la form List<List<string>> lists

    tu peut utiliser la méthode Sort

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lists.Sort(Compare);
    et compare est votre condition de trie
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     int Compare(List<string> x, List<string>y)
        {
            if (x == null)
            {
                if (y == null)
                {
                    // If x is null and y is null, they're 
                    // equal.  
                    return 0;
                }
                else
                {
                    // If x is null and y is not null, y 
                    // is greater.  
                    return -1;
                }
            }
            else
            {
                // If x is not null... 
                // 
                if (y == null)
                    // ...and y is null, x is greater.
                {
                    return 1;
                }
                else
                {
                   int ageresult=x[0].Compare(y[0]);//x[0] et y[0] age
                  if(ageresult !=0)
                   return ageresult;
                   else//age egale
                   {
                        int nomresult=x[1].Compare(y[1]);//x[1] et y[1] nom
                        if(nomresult!=0)
                        return nomresult;
                        else
                        {
                           return x[2].Compare(y[2]);//x[2] et y[2] prenom
                      
                         }
                    }             
    
    
                }

    avec un peux de retouche et je pense qu'elle fera ma faire

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses, j'ai réussi à obtenir le résultat que j'attendais.

  5. #5
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    merci de cliquer sur Résolu

  6. #6
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Le plus simple étant je pense d'utiliser LinQ comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    myCollection.OrderBy((item) => item.Name)
    .ThenBy((item) => item.Age)
    .ThenBy((item) => item.City);
    Ca permet de changer le type de tri selon la où tu es dans ton code.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par MaximePalmisano Voir le message
    Le plus simple étant je pense d'utiliser LinQ comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    myCollection.OrderBy((item) => item.Name)
    .ThenBy((item) => item.Age)
    .ThenBy((item) => item.City);
    Ca permet de changer le type de tri selon la où tu es dans ton code.
    Merci aussi pour cette très bonne solution.

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

Discussions similaires

  1. Comment créer une listBox avec plusieurs colonnes ?
    Par volcom_2222 dans le forum VB.NET
    Réponses: 6
    Dernier message: 27/02/2010, 11h44
  2. Trier une liste avec LINQ to SQL
    Par anthride dans le forum Linq
    Réponses: 2
    Dernier message: 12/02/2010, 10h40
  3. Trier une requûete avec plusieurs UNION
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/07/2008, 16h28
  4. [XSLT] trier une liste avec une variable
    Par ieuthm dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/04/2008, 21h56
  5. trier une liste de plusieurs facons
    Par Darkantho dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 14/02/2008, 17h54

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