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 :
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));
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);
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}"); }
Alors pourquoi mon Sort() sur un Integer se comporte comme ça ? :/
Merci.
Partager