C# Directory.EnumerateFiles 排序错误

本文关键字:错误 排序 EnumerateFiles Directory | 更新日期: 2023-09-27 18:36:32

我正在从带有以下内容的文件夹中读取一些文件:

foreach (string file in Directory.EnumerateFiles(<folder>, "Client_*.txt"))
{
//Do my stuff
}

如果我有文件Client_999.txtClient_1000.txt ,则始终首先处理Client_1000.txt文件。

这总是发生在_9_10; _99_100 ; _999_1000 ;等。。。

是否有任何订购选项可以完成这项工作?

C# Directory.EnumerateFiles 排序错误

如果文件始终Client_<number>.txt的形式,那么您基本上希望根据解析的数字对它们进行排序。因此,编写一个方法来获取原始文件名,去掉前缀/后缀(或使用正则表达式提取数字),然后使用 int.Parse .获得该方法后,可以使用OrderBy对序列进行适当的排序。请注意,此时使用 EnumerateFiles 不会给您带来任何真正的好处,因为它需要获取所有文件名才能生成第一个文件名。

当然,如果您可以更改文件名格式,则可以将它们格式化为Client_0000.txt等 - 只要您没有达到 10,000 个文件,您就可以了。

如果要以不同的顺序获取文件,则必须通过OrderBy调用自己显式排序文件。 EnumerateFiles本身不支持任何其他排序。