Hallo,
ich hab folgendes Problem und zwar moechte ich String arrays sortieren, welche buchstaben und zahlen enthalten.
var refDesOfNewSheet = from refdes in installationPoints_new
where refdes != "" && refdes != null
orderby refdes
select refdes;
funktioniert alles ohne Fehlermeldung. Das Problem ist aber, dass meine Strings wie folgt aussehen:
"R10", "R9", "R8"
Wenn ich das nun sortiere sollte R8, R9, R10 heraus kommen, es kommt aber eben
R10, R8, R9 raus.
Wie kann ich das beheben? Das R gehoert mit zum string, d.h. ich brauche die inforamation und kann sie nicht einfach wegschneiden.
Danke fuer anregungen und ideen
Tom
Hallo Tom
Die Sortierung ist so schon korrekt. "9" ist größer als "1" und da du Strings sortierst wird von links nach rechts sortiert. Du müsstest beispielsweise eine Regex nehmen, die Zahl extrahieren und über int.Parse konvertieren um nach der zu sortieren.
Grüße
Flo
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.
Hallo,
verwende OrderBy direkt als ExtensionMethod. OrderBy hat nämlich auch eine Überladung wo du einen IComparer angeben kannst indem du dann deine eigene Sortierlogik einbauen kannst.
Baka wa shinanakya naoranai.
Mein XING Profil.
ok super danke! Der denk anstoss hat mir geholfen. In meinem Fall war es so, dass immer das erste Element ein Buchstabe ist, somit konnte ich es wie folg realisieren:
var refDesOfNewSheet = from refdes in installationPoints_new
where refdes != "" && refdes != null
orderby Convert.ToInt32(refdes.Substring(1))
select refdes;
Gruesse Tom
Hallo Tschebbe,
wenn ich es richtig verstehe möchtest du die listen alphanumerisch sortieren - dafür benötigst du einen entsprechenden comparer. Leider gibt es im .NET-Framework (meines wissens nach) nix passendes 😦 Falls du eine ähnliche sortierung haben möchtest wie es der win-explorer macht dann kannst du mittels pinvoke auf StrCmpLogicalW zugreifen...
Gruß
@yngwie: Die Loesung die ich geposted habe funktioniert. Ich schneide die Zahlen ab convertiere sie in int und lass sie dann sortieren. Funktioniert wunderbar.