GetDirectories() mit Windows-Sortierung

16/04/2009 - 16:58 von Werner Schmidt | Report spam
Hallo Group,

gegeben sei folgende Ordnerstruktur (Ansicht Windows-Explorer):

D:\Test\test_1
D:\Test\test_2
D:\Test\test_3
D:\Test\test_10
D:\Test\test_11
D:\Test\test_12

Führe ich

[CODE]
string[] directories = Directory.GetDirectories(selectedPath, "*",
SearchOption.AllDirectories);
[/CODE]

aus, um die Verzeichnisse im Ordner D:\Test (=selectedPath) einzulesen
erhalte ich folgende Reihenfolge (Ansicht Überwachen-Fenster in Visual
Studio):

directories {Dimensionen:[6]} string[]
[0] "D:\\Test\\test_1" string
[1] "D:\\Test\\test_10" string
[2] "D:\\Test\\test_11" string
[3] "D:\\Test\\test_12" string
[4] "D:\\Test\\test_2" string
[5] "D:\\Test\\test_3" string

Gibt es einen einfachen Weg das Array in die Reihenfolge zu bringen, die
mir im Windows-Explorer angezeigt wird?

Natürlich könnte ich durch brutales String-Splitten, TypeCasts und
regulàre Ausdrücke das von mir gewünschte Verhalten "hinvergewaltigen"
aber ich suche einen einfachen Weg (vll. über DirectoryInfo o. à.).

Seltsamerweise scheint der Windows-Explorer die Ordnernamen in
irgendeiner Form zu interpretieren: Klicke ich auf die "Name"-Spalte, um
die Ordner nach Name zu sortieren erhalte ich

[aufsteigend]
D:\Test\test_1
D:\Test\test_2
D:\Test\test_3
D:\Test\test_10
D:\Test\test_11
D:\Test\test_12

oder

[absteigend]
D:\Test\test_12
D:\Test\test_11
D:\Test\test_10
D:\Test\test_3
D:\Test\test_2
D:\Test\test_1

aber nie

[aufsteigend]
D:\Test\test_1
D:\Test\test_10
D:\Test\test_11
D:\Test\test_12
D:\Test\test_2
D:\Test\test_3

oder

[absteigend]
D:\Test\test_3
D:\Test\test_2
D:\Test\test_12
D:\Test\test_11
D:\Test\test_10
D:\Test\test_1

wie zu erwarten wàre.


Bei Dateien stoße ich auf das selbe Verhalten.


Mein System: WindowsXP, Visual Studio 2005 .Net2.0


Gruß


Werner
 

Lesen sie die antworten

#1 Kerem Gümrükcü
16/04/2009 - 18:36 | Warnen spam
Hallo Werner,

sortiere das zurückgegeben string-arry
doch mal mit folgenden Beispielen nach
Bedarf:

[Sort String Arrays in C#]
http://dotnetperls.com/Content/Sort...Array.aspx

[Numeric String Sort in C#]
http://www.codeproject.com/KB/recipes/csnsort.aspx

[Sorting Techniques in C# ]
http://www.devhood.com/tutorials/tu...orial_idR6

Vielleicht reicht ja auch schon ein "Array.Sort(DeinStringArray)"

Wenn Du LINQ hast, dann kannst Du das mit "orderby" machen:
[Ordering LINQ results]
http://srtsolutions.com/blogs/billw...sults.aspx

Vielleicht "kombinierst" Du das alles auch je nach
Situation, verfügbarem Framework/Sprache (LINQ)
und Bedarf,...


Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen