C#按名称中的自然数排序对文件进行排序?

我有像这样的目录中的文件
0-0.jpeg
0-1.jpeg
0-5.jpeg
0-9.jpeg
0-10.jpeg
0-12.jpeg

….

当我加载文件时:

FileInfo[] files = di.GetFiles();

他们的订单错误(他们应该像上面那样):

0-0.jpeg
0-1.jpeg
0-10.jpeg
0-12.jpeg
0-5.jpeg
0-9.jpeg

如何解决

我试图对它们进行排序,但没办法:

1) Array.sort(files,(f1,f2) => f1.Name.Compareto(f2.Name));

2) Array.sort(files,(x,y) => StringComparer.OrdinalIgnoreCase.Compare(x.Name,y.Name));

解决方法

按字母顺序,“错误”的顺序实际上是正确的.如果你想要按数字排序,那么你需要:

>将文件名转换为数字列表并对其进行排序
>以字母和数字排序相同的方式命名文件(0-001.jpeg和0-030.jpg)
>依靠文件创建时间进行排序(假设文件是​​按顺序创建的).

有关#3的示例,请参阅Sorting Directory.GetFiles()的答案.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...