按数值而不是字符串对文件夹中的文件进行排序

Ste*_*ieB 0 c# linq file

尝试这样的事情来按照文件名的数值而不是字符串对目录中的所有文件进行排序.

var txtFiles = Directory.GetFiles(outputDirectory, "*.txt").OrderBy(f => int.Parse(f));
Run Code Online (Sandbox Code Playgroud)

文件夹中的文件名就像

1.txt
2.txt
Run Code Online (Sandbox Code Playgroud)

等等

但得到错误"输入格式不正确"

有任何想法吗 ?

Ser*_*kiy 6

您正在尝试将整个文件名解析为整数(但文件名看起来像"C:\foo\bar\2.txt").用于Path.GetFileNameWithoutExtension仅获取文件名的数字部分(对于我提供的样本名称,它将返回"2"):

var txtFiles = Directory
                   .GetFiles(outputDirectory, "*.txt")
                   .OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f)));
Run Code Online (Sandbox Code Playgroud)

附注:您可以使用Directory.EnumerateFiles来避免在枚举文件时创建文件名数组.