Сортировать список по имени файла

У меня есть программа, в которой мне нужно перечислить файлы в моем списке, как окна сортировки файлов

у меня есть этот код

но он не сортирует файлы должным образом

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 ответ

Решение

Вы можете отсортировать список, используя цифры в имени файла, как показано ниже.

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

Скрипач: https://dotnetfiddle.net/RHzdm2

Другие вопросы по тегам