按最深目录排序包含路径的列表

时间:2009-05-05 05:33:27

标签: c# .net list sorting directory

我需要对包含路径(相对或绝对路径)的列表进行排序,以便首先显示最深的路径,例如:

  

\ New Folder \ Item1 \ tools \ 1
  \ New Folder \ Item1 \ tools
  \ New Folder \ Item1
  \新文件夹
  等...

我可以使用Path类中的API进行操作吗?

谢谢! 学家

2 个答案:

答案 0 :(得分:6)

这有点开箱即用,但您可以随时执行此操作:

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

也就是说,只需按路径分隔符出现的频率排序。

答案 1 :(得分:2)

我假设这些路径是字符串,那么为什么不按降序排序呢?

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下
  \ New Folder \ tools \ 1
  \新文件夹\工具
  \新文件夹