Entwickler-Ecke

Sonstiges (.NET) - Sort List Filenames


Dsharp - Mo 08.09.14 13:50
Titel: Sort List Filenames
Hi,

ich versuche gerade eine Liste mit Dateien zu ordnen.

C#-Quelltext
1:
2:
3:
List<string> files = new List<string>(); 
// load files
files.sort();


Files:
- file_1.ext
- file_2.ext
- file_3.ext
- file_10.ext
usw.

Directory.GetFile() lädt mir die Datien durcheinander.

Das Problem ist nur, das es schlicht alphabetisch ordnet. Das ist ja auch gewollt aber nicht so:
- file_1.ext
- file_10.ext
- file_2.ext
- file_3.ext

Sondern so:
- file_1.ext
- file_2.ext
- file_3.ext
- file_10.ext

Jetzt könnte ich natürlich alles in einer for-schleife zusammenkloppen.
Doch da gibts bestimmt eine elegantere Lösung.
Hat jemand eine Idee?

Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Th69 - Mo 08.09.14 14:25

Hallo und :welcome:

das Stichwort dafür lautet: natural sort (order)

Da gibt es mehrere Ansätze dafür:
- entweder selber implementieren, z.B. Natural Sort Comparer [http://www.codeproject.com/Articles/22517/Natural-Sort-Comparer]
oder
- die Windows-Funktion StrCmpLogicalW (per P/Invoke) nutzen, s. z.B. Natural Sort Order in C# [http://stackoverflow.com/questions/248603/natural-sort-order-in-c-sharp]


Dsharp - Mo 08.09.14 14:29

Hmmm, danke. Da war ich irgendwie schon drauf. Hat mich aber ein bisschen verschreckt ^^ Ist doch ziehmlich viel code.
Scheint so als gibts im Framework nichts vorgefertigtes.

Nachtrag:
Ok, das von codeproject.net hat wunderbar geklappt. Einfach die Classe ins Projekt kopieren. Und
mittels using (NaturalComparer) sortieren lassen.
Danke! :)