richardyork Ответов: 2

Файлы в listbox нужно упорядочить по дате/времени создания файла


У меня есть следующее, что заполняет список, но сначала мне нужно упорядочить файлы по дате/времени создания. Самая новая вершина списка. Звучит достаточно просто, но я просто не могу понять, как это сделать. Любая помощь очень ценится! Заранее спасибо

For Each file As String In Directory.GetFiles("C:\ProgramData\Folder\Temp\", "*.pdf")

    lstPDFs.Items.Add(Path.GetFileNameWithoutExtension(file))

Next


Что я уже пробовал:

Погуглил но кажется не могу собраться с мыслями

MadMyche

То, что вы ищете, - это свойство filesysteminfo.creationtime и используете его в LINQ .Способ сортировки

2 Ответов

Рейтинг:
2

littleGreenDude

Как насчет этого:

List<FileInfo> lstFiles = new List<FileInfo>();
foreach (var file in Directory.GetFiles(@"C:\yourfolder\", "*.pdf"))
{
    FileInfo fInfo = new FileInfo(file);
    lstFiles.Add(fInfo);
}

var lstPDFs = lstFiles.OrderBy(f => f.CreationTime).Select(f => f.FullName).ToList();


Извините, только что заметил, что это VB.Чистый вопрос. Не моя сильная сторона, что-то вроде этого:

Dim lstFiles As List(Of FileInfo) = New List(Of FileInfo)()

For Each file In Directory.GetFiles("C:\yourfolder\", "*.pdf")
    Dim fInfo As FileInfo = New FileInfo(file)
    lstFiles.Add(fInfo)
Next

Dim lstPDFs = lstFiles.OrderBy(Function(f) f.CreationTime).[Select](Function(f) f.FullName).ToList()


Рейтинг:
1

MadMyche

Извините, что у меня не было времени раньше, когда я опубликовал свой комментарий... вот краткое доказательство концепции консольного приложения, использующего LINQ.

Dim FileList = New DirectoryInfo("C:\FolderName\").GetFiles("*.pdf")
Dim DisplayList = From EachFile In FileList Order By EachFile.CreationTime

For Each DisplayFile In DisplayList
  Console.WriteLine(DisplayFile.Name)
Next

Вероятно, можно было бы упростить еще больше, но, как и "LittleGreenDude", VB-это не моя сильная сторона