Фильтр файлов и порядок по дате изменения VB - PullRequest
0 голосов
/ 01 февраля 2019

Я фильтрую файлы по нескольким расширениям и хочу упорядочить по дате.

Я пытаюсь GetFiles (). OrderByDescending (Function (p) p.LastWriteTime)

но не могу заказать вот так.

Dim driver As DriveInfo = DriveInfo.GetDrives().Where(Function(x) x.DriveType = DriveType.Removable).FirstOrDefault
        If driver IsNot Nothing AndAlso driver.IsReady Then
            UsbRootPath = Path.GetPathRoot(driver.RootDirectory.ToString)
            Dim ext = {".png", ".jpg", "*.zip"}
            Dim rootFiles() As String = ext.SelectMany(Function(f) Directory.GetFiles(driver.RootDirectory.ToString, f, SearchOption.TopDirectoryOnly)).ToArray()
End If

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Я пытаюсь GetFiles().OrderByDescending(Function(p) p.LastWriteTime)

Ну, это не работает, потому что вы используете его в SelectMany, так что в виде подзапроса.Вы должны применить заказ в последний раз.Также p - это String, путь, который вам нужен File.GetLastWriteTime:

Dim rootFiles() As String = ext.
    SelectMany(Function(f) Directory.EnumerateFiles(driver.RootDirectory.ToString, f, SearchOption.TopDirectoryOnly)).
    OrderByDescending(Function(f) File.GetLastWriteTime(f)).
    ToArray()
0 голосов
/ 01 февраля 2019

Я бы посоветовал вам использовать классы DirectoryInfo и FileInfo:

Dim fileInfos = extensions.SelectMany(Function(ext) New DirectoryInfo(driver.RootDirectory.FullName).
                           GetFiles("*" & ext)).
                           OrderBy(Function(fi) fi.LastWriteTime)

То, что вы делаете от этого, зависит именно от того, что вы хотите.Если вы хотите полный путь каждого файла в массиве:

Dim filePaths = fileInfos.Select(Function(fi) fi.FullName).ToArray()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...