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 un List avec Sort by et Group By


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Points : 68
    Points
    68
    Par défaut Trier un List avec Sort by et Group By
    Bonjour,
    voici mon problème. J'ai une classe Eleve avec Nom, Prenom et Classe.
    Je voudrais Trier ce List<Eleve>, appelé ListeEleves), par Nom et Prenom et les regrouper par Classe.
    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var ListeTrieeEtGroupee = from UnEleve in ListeEleves
    orderby UnEleve.Nom,
    orderby UnEleve.Prenom
    group UnEleve by orderby UnEleve.Classe into Groupe
    select new Groupe;
    A priori ça marche sauf qu'après je n'arrive pas à récupérer tous les éléves (pour traitement) dans le résultat ListeTrieeEtGroupee.
    Merci beaucoup d'avance poru votre aide.
    Cédric

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Points : 68
    Points
    68
    Par défaut
    J'ai oublié, dans la classe Eleve j'ia aussi le membre Niveau qui correspond à 6ème, 5ème, 4ème, 3ème. Donc en fait je voudrais trier d'abord la liste par Niveau, puis les regrouper par classe, puis les trier par Nom et Prenom.
    Et là j'avoue que je suis bloqué
    Cédric

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    J'ai rien compris... tu veux obtenir quoi au final ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Points : 68
    Points
    68
    Par défaut
    Obtenir une liste des élèves triés de la 6ème à la 3ème, groupés par classe, et triés par Nom et Prenom (dans chaque classe)

  5. #5
    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
    Obtenir une liste des élèves triés de la 6ème à la 3ème, groupés par classe, et triés par Nom et Prenom (dans chaque classe)
    Si c'est UNE liste d'eleves telle que tu la decris c'est forcément une liste triée par Niveau, Classe, Noms, Prenom : les groupes ne sont que des ruptures dans ta liste

    Je je connais pas asser Link pour savoir comment tu peux appliquer un filtre pour ne voir qu'un groupe dans cette liste ou d'en extraire des sous liste qui seront tes groupes mais avec un dataview c'est possible !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Points : 68
    Points
    68
    Par défaut
    En fait tu as raison, il faut que j'obtienne un résultat à plusieurs niveaux

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Cedric33 Voir le message
    Obtenir une liste des élèves triés de la 6ème à la 3ème, groupés par classe, et triés par Nom et Prenom (dans chaque classe)
    groupés ? donc tu veux une liste de classes, chaque classe ayant une liste d'élèves ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Points : 68
    Points
    68
    Par défaut
    Oui c'est ça et les classes apparaissement de la 6eme à la 3eme

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Alors, en fait on ne peut pas vraiment trier les classes par niveau, vu que le niveau est une propriété des élèves et non des classes... Par contre, a priori tous les élèves d'une même classe sont au même niveau, donc le fait de les trier par niveau avant de les grouper par classe devrait résoudre ce problème. Le code suivant devrait donner à peu près le résultat voulu :

    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
        List<Eleve> liste = new List<Eleve>();
        ...
     
        var result = from e in liste
                     orderby e.Niveau descending, e.Nom, e.Prenom
                     group e by e.Classe;
     
        foreach(IGrouping<string, Eleve> g in result)
        {
            Console.WriteLine("Classe : {0}", g.Key);
            foreach(Eleve e in g)
            {
                Console.WriteLine("\t{0} {1}", e.Nom, e.Prenom);
            }
        }

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Points : 68
    Points
    68
    Par défaut
    Merci beaucoup tu es un chaef !!
    Cédric

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

Discussions similaires

  1. Trier une liste avec Collections.sort(liste)
    Par nakry dans le forum Collection et Stream
    Réponses: 18
    Dernier message: 25/09/2013, 16h52
  2. Trier un tableau() avec Sort
    Par ouskel'n'or dans le forum Général VBA
    Réponses: 6
    Dernier message: 02/10/2012, 15h01
  3. Trier une liste avec LINQ to SQL
    Par anthride dans le forum Linq
    Réponses: 2
    Dernier message: 12/02/2010, 11h40
  4. [XSLT] trier une liste avec une variable
    Par ieuthm dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/04/2008, 22h56

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