使用Filename对列表进行排序

时间:2017-05-11 23:41:39

标签: c# wpf sorting listbox system.io.fileinfo

我有一个程序,我需要列出我的列表框中的文件,就像Windows排序文件的方式

我有这个代码

但它没有正确排序文件

public ObservableCollection<string> FileNames { get; } = new ObservableCollection<string>();
    var lstfiles = System.IO.Directory.GetFiles(SelectedPath, "*").Select(fn => new FileInfo(fn)).OrderBy(f => f.Name);
                foreach (var item in lstfiles)
                {
                    FileNames.Add(item.ToString());
                }

我的文件名是整数

1.pdf
2.pdf
3.pdf
4.pdf
...
4000.pdf

程序按这种方式排序

1.pdf
99.pdf
143.pdf

1 个答案:

答案 0 :(得分:3)

您可以使用文件名中的数字对列表进行排序,如下所示。

lstFiles = lstFiles.OrderByDescending(x=> int.Parse(Regex.Replace(x,"[^0-9]+","0"))).ToList<string>();

fiddler:https://dotnetfiddle.net/RHzdm2