我正在尝试获取目录内文件的排序列表。该文件具有不同的扩展名。
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/