C# 从文件名中获取日期部分,并使用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的文件。日期被附加到这些文件中。我想先按如下顺序获取最新文件。我尝试使用CreationTime和lastwriteaccesstime,但没有给出所需的结果。请按此顺序帮助获取文件C# 从文件名中获取日期部分,并使用c根据最新日期进行排序#,c#,file,date,sorting,directory,C#,File,Date,Sorting,Directory,我在目录中有一组名为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的文件。日期被附加到这些文件中。我想先按如下顺序获取最新文件。我尝试使用CreationTime和lastwriteaccesstime,但没有给出所需的结果。请按此顺序帮助获取文件 db.dat.02-28-2021 db.dat.01-30-2021 db.dat.01-30-2020 db.da
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);
}
CreationTime是创建日期:,LastAccessTime是访问日期:,LastWriteTime是修改日期:。这些不受附加到文件的日期的影响 您可以使用
FileInfo.Extension
(继承自)获取日期部分,因为它实际上是扩展名
由于日期已经填充,您可以将p.CreationTime
换成p.Extension
。为了确保排序相同,您可以附加到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
代码
DirectoryInfo dpdirectorySelected=newdirectoryinfo(@“C:\wfiles”);
FileInfo[]files=dpdirectorySelected.GetFiles().OrderBy(p=>p.Extension,StringComparer.InvariantCulture).ToArray();
foreach(文件中的文件信息)
{
var f=Path.GetFileNameWithoutExtension(fi.FullName);
}
您得到的结果是什么?您应该能够使用Path.GetExtension
提取文件名的日期部分(因为这实际上是扩展名),然后使用代码对其进行解析(不要忘记在适当的位置添加-
,以匹配您的日期格式).文件名中的日期是否与CreationTime相同?db.dat.01-30-2018 db.dat.01-30-2020 db.dat.01-30-2021 db.dat.02-28-2019 db.dat.02-28-2021@KingOfArrows不一样
var sortedFiles = Directory.EnumerateFiles(folder, "db.dat.*")
.OrderByDescending(file => DateTime.ParseExact(Path.GetExtension(file), ".MM-dd-yyyy", null));