Подтвердить что ты не робот

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

Я пытаюсь получить список всех файлов в папке из С#. Достаточно легко:

Directory.GetFiles(folder)

Но мне нужен результат отсортированный в алфавитном порядке, так как все числа и Мне нужно знать наивысшее число в каталоге. Конечно, я мог бы захватить их в массив/список объектов, а затем сделать вид, но мне было интересно, если есть какой-то фильтр/параметр?

Все они называются ведущими нулями. Как:

00000000001.log
00000000002.log
00000000003.log
00000000004.log
..
00000463245.log
00000853221.log
00024323767.log

Самый простой способ? Мне не нужно получать другие файлы, просто "самый большой/последний" номер.

4b9b3361

Ответ 1

var files = Directory.EnumerateFiles(folder)
                     .OrderByDescending(filename => filename);

(Метод EnumerateFiles является новым в .NET 4, вы все равно можете использовать GetFiles, если используете более раннюю версию)


EDIT: на самом деле вам не нужно сортировать имена файлов, если вы используете метод MaxBy, определенный в MoreLinq:

var lastFile = Directory.EnumerateFiles(folder).MaxBy(filename => filename);

Ответ 2

var files = from file in Directory.GetFiles(folder)    
               orderby file descending 
               select file;

var biggest = files.First();

если вы действительно после наибольшего числа, и эти лог файлы названы так, как вы предлагали, как насчет:

Directory.GetFiles(folder).Length

Ответ 3

Расширение того, что сказал @Thomas, если вам нужны только лучшие файлы X, вы можете сделать это:

int x = 10;
var files = Directory.EnumerateFiles(folder)
                 .OrderByDescending(filename => filename)
                 .Take(x);