Autor Beitrag
Navrim
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 07.06.16 19:12 
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:

ausblenden 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

ausblenden C#-Quelltext
1:
2:
list.Sort((x, y) => x.preis1.CompareTo(y.preis1)); //asc
list.Sort((x, y) => -1*x.preis1.CompareTo(y.preis1)); //desc

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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: Navrim
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 ;)

Für diesen Beitrag haben gedankt: Navrim
Navrim Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mi 08.06.16 08:31 
@Navrim
Du musst beim ListView die Eigenschaft Sorting auf None setzen. Hatt' ich letztens erst das selbe Problem :)