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.txt
和Client_1000.txt
,则始终首先处理Client_1000.txt
文件。
这总是发生在_9
和_10
; _99
和_100
; _999
和_1000
;等。。。
是否有任何订购选项可以完成这项工作?
如果文件始终是Client_<number>.txt
的形式,那么您基本上希望根据解析的数字对它们进行排序。因此,编写一个方法来获取原始文件名,去掉前缀/后缀(或使用正则表达式提取数字),然后使用 int.Parse
.获得该方法后,可以使用OrderBy
对序列进行适当的排序。请注意,此时使用 EnumerateFiles
不会给您带来任何真正的好处,因为它需要获取所有文件名才能生成第一个文件名。
当然,如果您可以更改文件名格式,则可以将它们格式化为Client_0000.txt
等 - 只要您没有达到 10,000 个文件,您就可以了。
如果要以不同的顺序获取文件,则必须通过OrderBy
调用自己显式排序文件。 EnumerateFiles
本身不支持任何其他排序。