我需要对包含路径(相对或绝对)的列表进行排序,使最深的路径首先出现,例如:
\New Folder\Item1\tools\1
\New Folder\Item1\tools
\New Folder\Item1
\New Folder
等等...
是否有Path
类中可用于此目的的API?
谢谢! J.
这可能有些不寻常,但您始终可以这样做:
var sortedList = list.OrderByDescending(
p => p.Count(c => c == Path.DirectorySeparatorChar
|| c == Path.AltDirectorySeparatorChar));
我假设这些路径是字符串,那么为什么不按降序排序呢?
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
\New Folder\tools
\New Folder