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?
.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%Dies wird durch den aktuellen Kultursatz definiert, der in CompareInfo Eigenschaft. Jede Kultur hat kulturspezifische Sortierregeln für Zeichenfolgen.