Wie sortiert .NET Sonderzeichen?

7

Warum sortiert .NET die Zeichen '+' und '^' in einer anderen Reihenfolge als in der ASCII-Tabelle oder in der Way SQL sortiert sie.

In der ASCII-Tabelle hat '+' den Wert 42 und '^' hat den Wert 94, aber wenn Sie Code wie diesen ausführen:

%Vor%

Die Liste enthält Werte in der folgenden Reihenfolge:

{"!", "^", "+"}

LINQ sort erzeugt das gleiche Ergebnis. Kann mir jemand sagen, was für eine Art .NET tut?

    
Vadim 14.06.2012, 17:36
quelle

2 Antworten

17

.NET verwendet kein ASCII, es verwendet Unicode. Wenn Sie eine String-Sortierung durchführen, verwendet .NET (standardmäßig) die Regeln der aktuellen Kultur zum Sortieren. In diesem Fall geben diese Regeln an, dass "^" vor "+" steht. Sie können das erwartete Ergebnis erhalten, indem Sie den String-Vergleich "ordinal" verwenden:

%Vor%     
dlev 14.06.2012, 17:38
quelle
2

Dies wird durch den aktuellen Kultursatz definiert, der in CompareInfo Eigenschaft. Jede Kultur hat kulturspezifische Sortierregeln für Zeichenfolgen.

    
Reed Copsey 14.06.2012 17:39
quelle

Tags und Links