从文件名中获取日期部分并使用 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);
}
我在目录中有一组文件,名称为 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);
}