Сортировка списка с путями по глубочайшей директории - PullRequest
3 голосов
/ 05 мая 2009

Мне нужно отсортировать список, содержащий пути (относительные или абсолютные), чтобы сначала отображался самый глубокий путь, например:

\ Новая папка \ Item1 \ tools \ 1
\ Новая папка \ Item1 \ tools
\ Новая папка \ Item1
\ Новая папка
и т.д ...

Есть ли в классе Path API, который я могу использовать для этого?

Спасибо! J.

Ответы [ 2 ]

6 голосов
/ 05 мая 2009

Это немного из коробки, но вы всегда можете сделать это:

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

То есть просто упорядочите по частоте появления символа разделителя пути.

2 голосов
/ 05 мая 2009

Я предполагаю, что эти пути являются строками, так почему бы не отсортировать их в порядке убывания?

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

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

Или, если они в string[], вы можете использовать:

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

Результат:

\ Windows \ System32
\ Windows
\ Новая папка \ tools \ 1
\ Новая папка \ tools
\ Новая папка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...