如何自定义排序 Directory.GetFiles() 的 return 值

How to custom sort the return values of Directory.GetFiles()

我正在加载放置在字符串数组中目录中的文件列表。我正在使用 System.IO.Directory.GetFiles()

String[] path = Directory.GetFiles(batchElements[j].DocIdPath, "*.csv", SearchOption.AllDirectories);

我假设返回值的默认排序顺序是按名称排序。所以我的文件按以下顺序加载。

但我想按此顺序收集值。

感谢帮助。

你可以这样做:

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

代码:

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

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