51 votes

LINQ OrderBy ne trie pas correctement

J'espère que quelqu'un pourra me prouver le contraire ici :)

Si je fais ça:

 List<string> a = new List<string> { "b", "c", "a", "aa" };
var b = a.OrderBy(o => o).ToList();
 

Je m'attendrais à ce que le résultat de 'b' soit:

 a
aa
b
c
 

Au lieu de cela, le résultat obtenu est:

 a
b
c
aa
 

Comment puis-je obtenir OrderBy pour faire un tri alphabétique "correct"? Est-ce que je me trompe tout simplement? :)

125voto

minitech Points 87225

Vous êtes dans la culture danoise, qui traite aa tant que å et le met après ø conséquence. Vous pouvez passer un comparateur de chaîne qui agit différemment de OrderBy pour changer cela:

 var b = a.OrderBy(o => o, StringComparer.InvariantCulture).ToList();
 

20voto

Kim Raaness Points 407

Très probablement une chose culturelle. Vous pouvez essayer ceci:

 List<string> a = new List<string> { "b", "c", "a", "aa" };
var b = a.OrderBy(o => o, StringComparer.InvariantCultureIgnoreCase).ToList();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X