我正在加载放置在字符串数组目录中的文件列表。我正在使用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.Parseint.TryParse解析
在LINQ中的OrderBy中使用该值


码:

var output = path.OrderBy(p =>
                        int.TryParse(Path.GetFileNameWithoutExtension(p).Split('_').Last(), out temp) ?
                        temp : int.MaxValue);


如果需要数组或List<T>作为输出,则将ToArray()ToList()附加到查询中。

10-08 08:26