myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Warum sortieren numerische Strings mit negativen Werten nicht korrekt?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Warum sortieren numerische Strings mit negativen Werten nicht korrekt?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
c#nup
myCSharp.de-Mitglied

Dabei seit: 04.12.2017
Beiträge: 19


c#nup ist offline

Warum sortieren numerische Strings mit negativen Werten nicht korrekt?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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?
Neuer Beitrag 15.10.2020 09:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dannoe
myCSharp.de-Mitglied

Dabei seit: 24.11.2015
Beiträge: 106
Entwicklungsumgebung: VS2005-VS2017


dannoe ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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")
Neuer Beitrag 15.10.2020 10:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
c#nup
myCSharp.de-Mitglied

Dabei seit: 04.12.2017
Beiträge: 19

Themenstarter Thema begonnen von c#nup

c#nup ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

C#-Code:
[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?
Neuer Beitrag 15.10.2020 13:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
witte
myCSharp.de-Mitglied

Dabei seit: 03.09.2010
Beiträge: 923


witte ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Gut möglich das er rein alphanumerisch sortiert und Sonderzeichen (in diesem Fall '-') rausfiltert.
Neuer Beitrag 15.10.2020 15:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.531
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Warum verwendest du denn überhaupt Strings, wenn es sich doch um Zahlen handelt?
Neuer Beitrag 15.10.2020 20:13 Beiträge des Benutzers | zu Buddylist hinzufügen
chilic
myCSharp.de-Poweruser/ Experte

Dabei seit: 12.02.2010
Beiträge: 2.052


chilic ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielleicht weiß ja das Grid von irgendwoher dass es sich um Zahlen handelt und sortiert dementsprechend auch numerisch.
Neuer Beitrag 16.10.2020 16:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 29.10.2020 21:12