Как отсортировать файлы по дате в имени?

319
05 апреля 2017, 12:54

Есть 10 файлов в формате xls. Название у них dd.mm.yy. Как отсортировать список files по возрастанию дат? Не совсем понятно как привести имя файла к DateTime и отсортировать их.

 var path = @"C:\Users\admin\Desktop\1\DBCommanderNew\bin\Debug";
 var files = Directory.GetFiles(
            path,"*.xls").Select(x => Path.GetFileNameWithoutExtension(x)).OrderBy(x => x).ToList();
Answer 1
var path = @"C:\Users\admin\Desktop\1\DBCommanderNew\bin\Debug";
var files = Directory
    .GetFiles(path,"*.xls")
    .Select(x => Path.GetFileNameWithoutExtension(x))
    .OrderBy(x => 
        {
            DateTime date;
            return DateTime.TryParseExact(x, "dd.MM.yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)
                ? date
                : DateTime.MinValue;
        }).ToList();
Answer 2

C# 7:

    {
        var path = @"C:\Users\admin\Desktop\1\DBCommanderNew\bin\Debug";
        var files = Directory.GetFiles(path, "*.xls")
            .Select(x => Selector(x))
            .OrderBy(x => x.Item2.Date)
            .Select(x => x.Item1)
            .ToList();
    }
    private static (string, DateTime) Selector(string input)
    {
        var file = Path.GetFileNameWithoutExtension(input);
        if (DateTime.TryParse(file, out DateTime dateTime))
            return (file, dateTime);
        return (file, DateTime.MinValue);
    }

C# 6:

    {
        var path = @"C:\Users\admin\Desktop\1\DBCommanderNew\bin\Debug";
        var files = Directory.GetFiles(path, "*.xls")
            .Select(x => Selector(x))
            .OrderBy(x => x.Item2.Date)
            .Select(x => x.Item1)
            .ToList();
    }
    private static Tuple<string, DateTime> Selector(string input)
    {
        var file = Path.GetFileNameWithoutExtension(input);
        DateTime dt;
        if (DateTime.TryParse(file , out dt))
            return Tuple.Create(file, dt);
        return Tuple.Create(file, DateTime.MinValue);
    }
READ ALSO
C# определить является ли процесс фоновым

C# определить является ли процесс фоновым

Получаю список все процессов командой

319
В чем разница между разработкой на C# в winforms и UWP?

В чем разница между разработкой на C# в winforms и UWP?

Расскажите в чем разница при разработке программы на C# в winforms и UWP? Есть ли разница в написании кода и если да то насколько? В данном вопросе...

247