C# 按名称排序 Directory.GetFiles(),不带扩展名

标签 c# file sorting

我正在尝试获取目录内文件的排序列表。该文件具有不同的扩展名。

foreach (String File in Directory.GetFiles(directory, "*").OrderBy(f => f))
{
 stringA[i] = File;
 i++;
}

问题是结果没有像我预期的那样排序。这是我在“stringA”中获得的:

1.txt
10.txt
11.png
12.png
18.png
19.txt
2.txt
21.png
22.png
23.png
24.png
25.txt
26.txt
27.txt
28.txt
29.txt
3.png
30.txt
31.txt
32..png
33..png
34..png
35.png
4.txt
40.txt
41.png etc

我想要的是:1.txt、2.txt、3.png、4.txt、5.png、6.txt、7、8、9、10、11、19、20、21、29、 30...

我能做什么?

最佳答案

var files = Directory.GetFiles(directory, "*")
         .Select(file => new { FileName = file, FileNumber = long.Parse(Path.GetFileNameWithoutExtension(file))  })
         .OrderBy(data => data.FileNumber);

foreach( file in files )
{
   Console.WriteLine("{0} (Number: {1})", file.FileName, FileNumber)
}

请注意,这会忽略您可能需要的任何错误处理。

关于C# 按名称排序 Directory.GetFiles(),不带扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36374256/

相关文章:

ios - 非相对 NSArray 排序

c# - WinForms设计器错误(无法加载资源)

c# - 按枚举类型自定义检查器

c# - MVC4 WebGrid 和 Ajax 分页

python - 使用Python将空格 ""插入表文件中以分隔列

arrays - 在 Go 中合并两个数组...容器分配错误

c# - 无法捕获由通过 PInvoke 调用的 C dll 引起的异常

file - Camel 文件组件中的动态输入/输出文件夹位置

sql-server - 第三方SQL Server备份工具如何访问数据库文件进行备份?

c - 循环穿过虚空**