bonjour,
j'essaie de comprendre un tri qui ne fonctionne pas.

La collection à trier est de type List<ExternalData>. ExternalData est une classe de base abstraite. Dans mon cas, j'utilise la classe dérivée ExternalAnimal pour trier (pour les tests selon l'ID ou le nom et plus tard la date de naissance ou je ne sais quoi).

Le diagramme de classes ressemble à ça :
Nom : ClassDiagram.PNG
Affichages : 130
Taille : 47,6 Ko

Le tri par ordre alphabétique fonctionne avec le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.Collection.Sort((p1, p2) => string.Compare(((ExternalAnimal)p1).FullName, ((ExternalAnimal)p2).FullName, true));
Nom : Tri_alphabetique.PNG
Affichages : 116
Taille : 71,0 Ko

Le tri par les nombre donne un truc classé bizarrement que je ne comprends pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.Collection.Sort((p1, p2) => ((ExternalAnimal)p1).Id < ((ExternalAnimal)p2).Id ? ((ExternalAnimal)p1).Id : ((ExternalAnimal)p2).Id);
Nom : Tri_rate.PNG
Affichages : 121
Taille : 67,7 Ko

Et ma requête Linq fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
var qry = from p in this.Collection
                      orderby ((ExternalAnimal)p).Id
                      select p;
            foreach (ExternalAnimal pet in qry)
            {
                Debug.WriteLine($"({pet.Id}) {pet.FullName}");
            }
Nom : Tri_ok.PNG
Affichages : 111
Taille : 12,3 Ko

Alors pourquoi mon Sort() sur un Integer se comporte comme ça ? :/
Merci.