Laden...

Warum sortieren numerische Strings mit negativen Werten nicht korrekt?

Erstellt von c#nup vor 3 Jahren Letzter Beitrag vor 3 Jahren 784 Views
C
c#nup Themenstarter:in
19 Beiträge seit 2017
vor 3 Jahren
Warum sortieren numerische Strings mit negativen Werten nicht korrekt?

Hallo zusammen,

gegeben ist ein DGV mit einer TextBoxColumn. In der Spalte stehen die Werte "1", "-1", und "2" drin. Durch das Klicken auf den Spaltenkopf werden die Werte sortiert. Aufsteigende Sortierung (von oben nach unten): "1", "-1","2". Absteigende Sortierung: "2", "-1", "1".

Ich hätte erwartet, dass hier zeichenweise sortiert wird, also "-", "1", "2", dem ist aber nicht so. Nach welcher Regel wird hier sortiert?

D
261 Beiträge seit 2015
vor 3 Jahren

Ich bin mir relativ sicher, dass dort die "normale" Vergleichsfunktion für Strings aufgerufen wird.
siehe Compare(String, String) (Beachte primär die die Dokumentation unter "Notes to Callers")

C
c#nup Themenstarter:in
19 Beiträge seit 2017
vor 3 Jahren

Danke für den Hinweis dannoe. Die Methode CompareOrdinal() ist die, die ich brauche. Dennoch frage ich mich, nach welcher Regel Compare() sortiert - gerade bei positiven und negativen Zahlen als strings. Ein Blick in den Quellcode von String.Compare() führt zu einem PInvoke


[System.Security.SecurityCritical]  // auto-generated
        [ResourceExposure(ResourceScope.Process)]
        [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)]
        [SuppressUnmanagedCodeSecurity]
        private static extern int InternalCompareString(IntPtr handle, IntPtr handleOrigin, String localeName, String string1, int offset1, int length1,
                                                                              String string2, int offset2, int length2, int flags);

Weiß jemand woher InternalCompareString() kommt und was es macht?

W
955 Beiträge seit 2010
vor 3 Jahren

Gut möglich das er rein alphanumerisch sortiert und Sonderzeichen (in diesem Fall '-') rausfiltert.

5.657 Beiträge seit 2006
vor 3 Jahren

Warum verwendest du denn überhaupt Strings, wenn es sich doch um Zahlen handelt?

Weeks of programming can save you hours of planning

C
2.121 Beiträge seit 2010
vor 3 Jahren

Vielleicht weiß ja das Grid von irgendwoher dass es sich um Zahlen handelt und sortiert dementsprechend auch numerisch.