Sam*_*til -5 c# sorting string list
例:
List<string> folders = new List<string>();
folders.Add("folder1/folder2/folder3/");
folders.Add("folder1/");
folders.Add("folder1/folder2/");
Run Code Online (Sandbox Code Playgroud)
我想根据字符排序这个列表,即'/',所以我的输出将是
folder1/
folder1/folder2/
folder1/folder2/folder3
LINQ:
folders = folders.OrderBy(f => f.Length).ToList(); // consider null strings
Run Code Online (Sandbox Code Playgroud)
要么 List.Sort
folders.Sort((s1, s2) => s1.Length.CompareTo(s2.Length));
Run Code Online (Sandbox Code Playgroud)
如果列表可以包含null的安全方法:
folders = folders.OrderBy(f => f?.Length ?? int.MinValue).ToList();
Run Code Online (Sandbox Code Playgroud)
如果你真的想按文件夹深度而不是字符串长度排序:
folders = folders.OrderBy(f => f.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).Length).ToList();
Run Code Online (Sandbox Code Playgroud)