如何使用c# linq对文件路径集合进行排序
本文关键字:集合 排序 路径 文件 何使用 linq | 更新日期: 2023-09-27 18:03:29
我有一个字符串集合:
/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来完成吗?或者其他方式?
给定
var input = new []
{
@"/a/b/111.txt",
@"/a/b/c/222.txt",
@"a/b/333.txt",
@"a/b/c/d/444.txt",
};
您可以通过删除前导/
(如果有的话)并将其用作排序键来"规范化"字符串:
var output = input.OrderBy(s => s.TrimStart('/')).ToList();
您可以通过从正在比较的字符串中删除所有斜杠来实现这一点:
items.OrderBy(item => item.Replace("/", ""));
你可以这样做,
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));
Working .Net Fiddle