【发布时间】:2016-02-09 12:01:23
【问题描述】:
我一直在开发一个 c# 图像查看器,它将从我的计算机中读取图像并在程序中显示它们。
//foreach file in path display the filename
foreach (var filename in Directory.GetFiles(<path>))
{
MessageBox.show(filename);
}
//Get image by number
var image = Directory.GetFiles(<path>).elementatordefault(<picnumber>).tostring());
我的问题是,即使我的图像在文件夹中按顺序排列:1,2,3,4 .....12,13,14....101,102,我的应用程序也会在以下顺序:1,101,102,12,13,2...
如何正确显示图像,就像它们在电脑文件夹中一样? 我不敢相信我需要将每个文件添加到数组或列表中,然后执行排序算法......(我还需要拆分文件路径和扩展名)必须有一种更简单的方法来做到这一点,任何非常感谢您的帮助。
【问题讨论】:
-
实现natural sort。
-
Directory.GetFiles不会对文件名施加顺序,Windows 资源管理器可能会这样做。您想要的排序类型称为“自然排序”,并且与往常一样,除非相关代码保证按照您想要的方式排序数据,否则您需要自己对数据进行排序。 -
不能使用 linq?你试过用 linq 订购它们吗?如果它返回一个字符串数组,请查看其他 StackOverflow 帖子Sorting string array in C#
-
@rmjoia 我没试过
-
而且,如果用户更改了资源管理器中的排序顺序(例如,修改时间的降序),则为:stackoverflow.com/questions/26535224/…