2009-05-05 5 views
3

でのパスのリストをソート最も深いパスは、例えば、最初に表示されるように(相対または絶対)パス:私が含まれているリストをソートする必要がある最も深いディレクトリ

新規フォルダ\アイテム1 \ツール\

\新規フォルダ
など\ 1
新しいフォルダ\アイテム1 \ツール\ 新しいフォルダ\アイテム1 \

...

Path CでのAPIはあります私はそれをするのに使うことができますか?

ありがとう! J.

答えて

6

これは、しかし、あなたはいつもこれを行うことができますアウト・オブ・ボックスビットです:

var sortedList = list.OrderByDescending(
    p => p.Count(c => c == Path.DirectorySeparatorChar 
     || c == Path.AltDirectorySeparatorChar)); 

で、パスの区切り文字が表示されます単に順序によってどのくらいの頻度。

+0

これは私のやり方です。 – Cerebrus

+0

これはすべてのパスが絶対的であることを必要とします。これは、相対的な経路がどこにあったかを決して知らないので、良い要求です。 –

+0

ええ、そうです。それぞれの文字列でPath.GetFullPathを呼び出して、それらがすべてマップされていることを知っている "ルート"パスを提供する必要があります。 –

2

私はそれらのパスが文字列だと仮定します。なぜ、それらを降順で並べ替えるのはなぜですか?彼らはstring[]にある場合

var paths = new List<string> 
{ 
    "\\New Folder", 
    "\\New Folder\\tools", 
    "\\Windows", 
    "\\Windows\\System32", 
    "\\New Folder\\tools\\1", 
}; 

var result = paths.OrderByDescending(s => s); 

またはあなたが使用することができます。

Array.Sort(paths); 
Array.Reverse(paths); 

結果は次のとおりです。

\ WINDOWS \ System32に
のWindows
新規フォルダ\ツール\ \ \ 1
\新しいフォルダ\ツール
\新しいフォルダ

関連する問題