Bonjour,
Je souhaite trier une liste selon 2 critères.
J'ai trouvé un code sur MSDN qui marche bien, mais seulement sur un critère.
Voici le code :
Classe Forum :
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 class Personne { private string nom; private int age; public Personne(string nom, int age) {... } public override String ToString() {... } ... } }
et mon main:
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 class Forum { private List<Personne> personnes; public Forum() { this.personnes = new List<Personne>(); } public void Inscrire(Personne personne) { this.personnes.Add(personne); } public IEnumerable<Personne> TriParNomEtAge() { return personnes.OrderBy(per => per.Age); } }
Le résultat est celui attendu. J'ai aussi essayé de trier sur le nom, ça marche bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 static void Main() { Forum unForum = new Forum(); unForum.Inscrire(new Personne("Dupont", 8)); unForum.Inscrire(new Personne("Dupont", 4)); unForum.Inscrire(new Personne("Milou", 1)); IEnumerable<Personne> lesPersonnes = unForum.TriParNomEtAge(); foreach (Personne p in lesPersonnes) { Console.WriteLine(p); } Console.ReadKey(); }
J'aurais aimé pourvoir trier sur le nom ET l'âge pour avoir le résultat :
Dupont - 4
Dupont - 8
Milou - 1
Par ailleurs, j'ai essayé le cast
mais ça a planté à l'exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public List<Personne> TriParNomEtAge() { return (List<Personne>) personnes.OrderBy(per => per.Nom); }
Merci pour vos conseils. Si il y a mieux comme solution, je suis preneur.
Partager