我需要对包含路径(相对或绝对路径)的列表进行排序,以便首先显示最深的路径,例如:
\ New Folder \ Item1 \ tools \ 1
\ New Folder \ Item1 \ tools
\ New Folder \ Item1
\新文件夹
等...
我可以使用Path
类中的API进行操作吗?
谢谢! 学家
答案 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
\新文件夹\工具
\新文件夹