найти самый последний файл в каталоге

Я пытаюсь загрузить самый последний файл из каталога, но мой следующий код не работает. Я получаю что-то очевидное ужасно неправильно?!

Dim myFile = Directory.GetFiles("C:\Users\Joe\Desktop\XML Logs").OrderByDescending(Function(f) f.LastWriteTime).First()

Я получаю два сообщения об ошибках:

Тип(ы) данных параметра(ов) типа в методе расширения 'Public Function OrderByDescending(Of TKey)(keySelector As System.Func(Of String, TKey)) As System.Linq.IOrderedEnumerable(Of String)', определенном в 'System.Linq.Enumerable', не может быть выведен из этих аргументов. Явное указание типов данных может исправить эту ошибку.

И:

'LastWriteTime' не является членом 'String'.


person A Smith    schedule 20.02.2012    source источник


Ответы (2)


Directory.GetFiles() возвращает String().

Очевидно, вы имели в виду DirectoryInfo.GetFiles(), который возвращает FileInfo().

person GSerg    schedule 20.02.2012

Вы можете заставить функцию Linq использовать объекты FileInfo вместо строк.

Dim myFile = Directory.GetFiles("C:\Users\Joe\Desktop\XMLLogs").OrderByDescending(Function(f) New FileInfo(f).LastWriteTime).First()
person Brian J    schedule 06.09.2013
comment
-1: это может сделать ОП, или он может просто использовать метод, который он намеревался использовать, то есть DirectoryInfo.GetFiles(), как говорит @GSerg ниже. - person John Saunders; 06.09.2013
comment
@JohnSaunders Я просто предлагал еще один возможный ответ. Он не указывает, хочет ли он строку в качестве ответа или нет. - person Brian J; 07.09.2013