Entwickler-Ecke
Basistechnologien - List.Sort/OrderBy liefert ein merkwürdiges Ergebnis
Navrim - Di 07.06.16 19:12
Titel: List.Sort/OrderBy liefert ein merkwürdiges Ergebnis
Hallo zusammen,
Ich habe ein Problem mit der Sortierung einer Liste.
Meine Liste ist vom generisch Typ Data, was eigene Klasse mit folgenden Attributen ist:
C#-Quelltext
1: 2: 3: 4:
| string artikelBezeichnung double preis1 double preis2 double preis3 |
Die Sortierung der double Werte ist sehr merkwürdig und erfolgt mittels der Sort-Methode und Lambda-Ausdrücken
C#-Quelltext
1: 2:
| list.Sort((x, y) => x.preis1.CompareTo(y.preis1)); list.Sort((x, y) => -1*x.preis1.CompareTo(y.preis1)); |
Die Sortierung der anderen double Werte ist analog zu diesem Beispiel.
Leider wird die Liste nicht so sortiert, wie ich es gerne hätte.
Ein kleiner Auszug aus der aufsteigend sortierten Liste:
1.1
1.2
1.9
11.8
19.99
124.8
2.9
26.7
26.8
289.8
3.8
3.9
55.78
.
.
.
usw
Die OrderBy Funktion mittels LinQ liefert das gleiche Ergebnis.
Habe es auch schon mit delegates versucht, was selbstverständlich auch das gleiche Ergebnis zurückliefert.
Ich hätte allerdings gerne eine komplett aufsteigend bzw. absteigend sortierte Liste.
Wie schaffe ich es die Liste so zu sortieren, wie ich es gerne hätte?
Gruß Navrim
Christian S. - Di 07.06.16 19:55
Also wenn das so sortiert wird, werden da sehr wahrscheinlich Strings verglichen. Bist Du Dir ganz sicher, dass die Preise vom Typ double sind und Du nach den richtigen Eigenschaften sortierst?
Ralf Jansen - Di 07.06.16 20:26
Wenn es kein Typproblem ist (string anstatt Zahlentyp) dann erzähl mal ~wo~ du dir die sortierte Liste anschaust. Möglicherweise wird die List<T> ja richtig sortiert nur das Ding das du zum Ansehen der Liste nutzt sortiert selber auch noch ;)
Navrim - Di 07.06.16 20:43
Also es ist sicher kein string ;). Auf diese Idee kam ich auch schon.
Zurzeit wird es in einem ListView angezeigt. Ich habe mir die Liste gerade beim debuggen angeschaut und sie ist tatsächlich richtig sortiert.
Ralf das hat mir schon sehr geholfen, ich weiß jetzt wo ich suchen muss, ich danke dir :).
erfahrener Neuling - Mi 08.06.16 08:31
@Navrim
Du musst beim ListView die Eigenschaft Sorting auf None setzen. Hatt' ich letztens erst das selbe Problem :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!