4 pièce(s) jointe(s)
List<>.Sort() diffère de Linq sur des entiers
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 :
Pièce jointe 610128
Le tri par ordre alphabétique fonctionne avec le code :
Code:
this.Collection.Sort((p1, p2) => string.Compare(((ExternalAnimal)p1).FullName, ((ExternalAnimal)p2).FullName, true));
Pièce jointe 610129
Le tri par les nombre donne un truc classé bizarrement que je ne comprends pas:
Code:
this.Collection.Sort((p1, p2) => ((ExternalAnimal)p1).Id < ((ExternalAnimal)p2).Id ? ((ExternalAnimal)p1).Id : ((ExternalAnimal)p2).Id);
Pièce jointe 610130
Et ma requête Linq fonctionne :
Code:
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}");
} |
Pièce jointe 610131
Alors pourquoi mon Sort() sur un Integer se comporte comme ça ? :/
Merci.