按编号排序文件名

Order filenames by number

我一直在开发一个 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...

如何正确显示图像,就像它们在电脑文件夹中一样? 我不敢相信我需要将每个文件添加到数组或列表中,然后执行排序算法......(我还需要拆分文件路径和扩展名)必须有一种更简单的方法来做到这一点,任何帮助将不胜感激。

如果您知道文件名的格式,则需要排序并实现自己的比较器。 此线程可能对您有所帮助:Sorting mixed numbers and strings

我终于弄明白了如何在 "natural order" 中对文件进行排序,也许有人会发现这段代码也很有用,就像我是如何做到的一样。

        List<string> mylist = new List<string> { };
        foreach (var f in Directory.GetFiles(FilePath1))
        {
            mylist.Add(f);
        }

        var result = mylist.OrderBy(x => x.Length);