我有一個目錄數組(包含子目錄的搜索)。我想對結果進行排序,像這樣:按實際目錄結構對目錄路徑數組排序
Test
---A
----A.A
---B
所以集合列出目錄,然後所有的目錄之內的,等等,每一個目錄。
我怎樣才能排序這樣的數組?
感謝
我有一個目錄數組(包含子目錄的搜索)。我想對結果進行排序,像這樣:按實際目錄結構對目錄路徑數組排序
Test
---A
----A.A
---B
所以集合列出目錄,然後所有的目錄之內的,等等,每一個目錄。
我怎樣才能排序這樣的數組?
感謝
如果這個排序按字母順序會爲你做這個(我認爲它應該)...
隨着
string[] dirs = Directory.GetDirectories(@"C:\");
您應該能夠使用
string[] sorted = dirs.OrderBy(d => d).ToArray();
或
Array.Sort(dirs);
如果您的搜索是遞歸你不需要排序。
OP詢問如何對一組平坦的目錄進行排序,而不是遞歸數據結構。數組可能是用遞歸函數創建的,但仍然不是所需的順序。例如,該過程可能首先添加一個目錄的所有子項,然後在該目錄的每個子項上調用它自己。 – phoog 2011-04-02 00:04:47
@phoog我完全理解,但如果搜索是由同一個應用程序完成的,爲什麼不以這種方式優化整個事情,以至於不需要後續排序呢?畢竟,排序是一個重要的資源消費者,所以儘量避免。如果沒有,那就把它巧妙地排序;) – Adi 2011-04-02 00:08:08
@Adi好點。我忽略了OP最初自己組裝陣列的(非常有可能的)可能性。 :-S – phoog 2011-04-02 00:10:26
不排序列表alphabe是否解決這個問題? – Jon 2011-04-01 23:59:52
@Jon,我在想同樣的事情。 – tster 2011-04-02 00:00:37
如果數組包含目錄的完整路徑(或允許訪問完整路徑的某種類型的對象),Jon的解決方案將工作。如果數組不包含該信息,那麼解決該問題將會相當困難! – phoog 2011-04-02 00:06:54