从文件名中获取日期部分并使用 C# 根据最新日期进行排序

Get date part from filenames and sort based on the latest date using c#

我在目录中有一组文件,名称为 db.dat.01-30-2021,db.dat.01-30-2020,db.dat.01-30 -2018,db.dat.02-28-2021,db.dat.02-28-2019.The 日期追加到这些 files.I 想按顺序先获取最新的文件 like below.I 尝试使用 CreationTime 和 lastwriteaccesstime,但没有给出预期的结果。请帮助按此顺序获取文件。

db.dat.02-28-2021
db.dat.01-30-2021
db.dat.01-30-2020
db.dat.02-28-2019
db.dat.01-30-2018

Code

 DirectoryInfo dpdirectorySelected = new DirectoryInfo(@"C:\wfiles");
 FileInfo[] files = dpdirectorySelected.GetFiles().OrderBy(p => p.CreationTime).ToArray();
                    
 foreach (FileInfo fi in files)
 {
  var f=Path.GetFileNameWithoutExtension(fi.FullName);
 }
var sortedFiles = Directory.EnumerateFiles(folder, "db.dat.*")
    .OrderByDescending(file => DateTime.ParseExact(Path.GetExtension(file), ".MM-dd-yyyy", null));

CreationTime 为 Date created:,而 LastAccessTime 为 Date accessed:,LastWriteTime 为 Date modified:。这些不受附加到文件的日期的影响

您可以使用 FileInfo.Extension(继承自 FileSystemInfo)来获取日期部分,因为它实际上是扩展名。

由于日期已经填充,您可以将 p.CreationTime 换成 p.Extension。为确保排序相同,您可以将 StringComparer.InvariantCulture 附加到 OrderBy 调用。

db.dat.02-28-2021
db.dat.01-30-2021
db.dat.01-30-2020
db.dat.02-28-2019
db.dat.01-30-2018

Code

 DirectoryInfo dpdirectorySelected = new DirectoryInfo(@"C:\wfiles");
 FileInfo[] files = dpdirectorySelected.GetFiles().OrderBy(p => p.Extension, StringComparer.InvariantCulture).ToArray();
                    
 foreach (FileInfo fi in files)
 {
  var f=Path.GetFileNameWithoutExtension(fi.FullName);
 }