2

我正在加载放置在字符串数组目录中的文件列表。我正在使用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

感谢帮助。

4

1 回答 1

4

你可以做:

  • 仅使用获取文件名Path.GetFileNameWithoutExtension
  • 根据拆分它们_
  • 获取最后一项
  • int.Parse使用或解析它int.TryParse
  • OrderBy在LINQ中使用该值

代码:

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

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

于 2016-01-18T16:34:19.443 回答