2011-04-01 44 views
1

我有一個目錄數組(包含子目錄的搜索)。我想對結果進行排序,像這樣:按實際目錄結構對目錄路徑數組排序

Test 
---A 
----A.A 
---B 

所以集合列出目錄,然後所有的目錄之內的,等等,每一個目錄。

我怎樣才能排序這樣的數組?

感謝

+3

不排序列表alphabe是否解決這個問題? – Jon 2011-04-01 23:59:52

+0

@Jon,我在想同樣的事情。 – tster 2011-04-02 00:00:37

+0

如果數組包含目錄的完整路徑(或允許訪問完整路徑的某種類型的對象),Jon的解決方案將工作。如果數組不包含該信息,那麼解決該問題將會相當困難! – phoog 2011-04-02 00:06:54

回答

3

如果這個排序按字母順序會爲你做這個(我認爲它應該)...

隨着

string[] dirs = Directory.GetDirectories(@"C:\"); 

您應該能夠使用

string[] sorted = dirs.OrderBy(d => d).ToArray(); 

Array.Sort(dirs); 
0

如果您的搜索是遞歸你不需要排序。

+0

OP詢問如何對一組平坦的目錄進行排序,而不是遞歸數據結構。數組可能是用遞歸函數創建的,但仍然不是所需的順序。例如,該過程可能首先添加一個目錄的所有子項,然後在該目錄的每個子項上調用它自己。 – phoog 2011-04-02 00:04:47

+0

@phoog我完全理解,但如果搜索是由同一個應用程序完成的,爲什麼不以這種方式優化整個事情,以至於不需要後續排序呢?畢竟,排序是一個重要的資源消費者,所以儘量避免。如果沒有,那就把它巧妙地排序;) – Adi 2011-04-02 00:08:08

+0

@Adi好點。我忽略了OP最初自己組裝陣列的(非常有可能的)可能性。 :-S – phoog 2011-04-02 00:10:26