如何使用c#linq对文件路径集合进行排序
我有一组字符串:如何使用c#linq对文件路径集合进行排序,c#,linq,C#,Linq,我有一组字符串: /a/b/111.txt /a/b/c/222.txt a/b/333.txt a/b/c/d/444.txt 我希望此系列的订购方式如下: /a/b/111.txt a/b/333.txt /a/b/c/222.txt a/b/c/d/444.txt 所以所有的a/b都被分组在一起,以此类推 这可以使用linq完成吗?或者其他方式?你可以这样做 List<string> values = new List<string>(); values.A
/a/b/111.txt
/a/b/c/222.txt
a/b/333.txt
a/b/c/d/444.txt
我希望此系列的订购方式如下:
/a/b/111.txt
a/b/333.txt
/a/b/c/222.txt
a/b/c/d/444.txt
所以所有的a/b
都被分组在一起,以此类推
这可以使用linq完成吗?或者其他方式?你可以这样做
List<string> values = new List<string>();
values.Add("/ a /b/111.txt");
values.Add("/ a / b / c / 222.txt");
values.Add("a / b / 333.txt");
values.Add("a / b / c / d / 444.txt");
var sortedList = values.OrderBy(p => p.Count(c => c == Path.DirectorySeparatorChar || c == Path.AltDirectorySeparatorChar));
列表值=新列表();
添加(“/a/b/111.txt”);
添加(“/a/b/c/222.txt”);
添加(“a/b/333.txt”);
添加(“a/b/c/d/444.txt”);
var sortedList=values.OrderBy(p=>p.Count(c=>c==Path.directoryseportorchar | | c==Path.altdirectoryseportorchar));
使用您可以通过删除正在比较的字符串中的所有斜杠来实现这一点:
items.OrderBy(item => item.Replace("/", ""));
给定
您可以通过删除前导的/
(如果有)来“规范化”字符串,并将其用作排序键:
var output = input.OrderBy(s => s.TrimStart('/')).ToList();
你不能只按
Path.GetDirectoryName(inputStringPathHere)
排序吗?data.OrderBy(x=>x.Split('/').Length)
?这个解决方案的问题是,如果在序列的开头有一个类似/p/q/222.txt的路径,它可以作为第一个元素排序
var output = input.OrderBy(s => s.TrimStart('/')).ToList();