Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Warum sortieren numerische Strings mit negativen Werten nicht korrekt?
c#nup
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

Warum sortieren numerische Strings mit negativen Werten nicht korrekt?

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
dannoe
myCSharp.de - Member



Dabei seit:
Beiträge: 141

beantworten | zitieren | melden

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")
private Nachricht | Beiträge des Benutzers
c#nup
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 958

beantworten | zitieren | melden

Gut möglich das er rein alphanumerisch sortiert und Sonderzeichen (in diesem Fall '-') rausfiltert.
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5959
Herkunft: Leipzig

beantworten | zitieren | melden

Warum verwendest du denn überhaupt Strings, wenn es sich doch um Zahlen handelt?
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2110

beantworten | zitieren | melden

Vielleicht weiß ja das Grid von irgendwoher dass es sich um Zahlen handelt und sortiert dementsprechend auch numerisch.
private Nachricht | Beiträge des Benutzers