我正在加载放置在字符串数组目录中的文件列表。我正在使用System.IO.Directory.GetFiles()
,
String[] path = Directory.GetFiles(batchElements[j].DocIdPath, "*.csv", SearchOption.AllDirectories);
我假设返回值的默认排序顺序是按名称。因此,我的文件按以下顺序加载。
2713_CFPB结算成本手册_2713_1.csv
2713_CFPB结算成本手册_2713_10.csv
2713_CFPB结算成本手册_2713_11.csv
2713_CFPB结算成本手册_2713_2.csv
2713_CFPB结算成本手册_2713_3.csv
2713_CFPB结算成本手册_2713_4.csv
2713_CFPB结算成本手册_2713_5.csv
2713_CFPB结算成本手册_2713_6.csv
2713_CFPB结算成本手册_2713_7.csv
2713_CFPB结算成本手册_2713_8.csv
2713_CFPB结算成本手册_2713_9.csv
但是相反,我想按此顺序收集值。
2713_CFPB结算成本手册_2713_1.csv
2713_CFPB结算成本手册_2713_2.csv
2713_CFPB结算成本手册_2713_3.csv
2713_CFPB结算成本手册_2713_4.csv
2713_CFPB结算成本手册_2713_5.csv
2713_CFPB结算成本手册_2713_6.csv
2713_CFPB结算成本手册_2713_7.csv
2713_CFPB结算成本手册_2713_8.csv
2713_CFPB结算成本手册_2713_9.csv
2713_CFPB结算成本手册_2713_10.csv
2713_CFPB结算成本手册_2713_11.csv
感谢帮助。
最佳答案
你可以做:
仅使用Path.GetFileNameWithoutExtension
获取文件名
根据_
拆分它们
获取最后一个项目
使用int.Parse
或int.TryParse
解析
在LINQ中的OrderBy
中使用该值
码:
var output = path.OrderBy(p =>
int.TryParse(Path.GetFileNameWithoutExtension(p).Split('_').Last(), out temp) ?
temp : int.MaxValue);
如果需要数组或
List<T>
作为输出,则将ToArray()
或ToList()
附加到查询中。