Autor Beitrag
Dsharp
Hält's aus hier
Beiträge: 4
Erhaltene Danke: 1



BeitragVerfasst: Mo 08.09.14 13:50 
Hi,

ich versuche gerade eine Liste mit Dateien zu ordnen.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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
oder
- die Windows-Funktion StrCmpLogicalW (per P/Invoke) nutzen, s. z.B. Natural Sort Order in C#
Dsharp Threadstarter
Hält's aus hier
Beiträge: 4
Erhaltene Danke: 1



BeitragVerfasst: 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! :)