C# 从文件名中包含最大日期的目录中获取文件
我需要获取文件名中包含最大日期的文件 文件示例:C# 从文件名中包含最大日期的目录中获取文件,c#,linq,directory,C#,Linq,Directory,我需要获取文件名中包含最大日期的文件 文件示例:zipFiles_2013-04-09_17-04-37.zip DirectoryInfo di = new DirectoryInfo(FilePath); 我只能得到最晚的生效日期。如何获取全名或全名 DateTime latestValue; di.GetFiles().Max(x => DateTime.TryParseExact(GetFileNameDate(x.FullName), "yyyy-MM-dd_HH-mm-ss"
zipFiles_2013-04-09_17-04-37.zip
DirectoryInfo di = new DirectoryInfo(FilePath);
我只能得到最晚的生效日期。如何获取全名或全名
DateTime latestValue;
di.GetFiles().Max(x => DateTime.TryParseExact(GetFileNameDate(x.FullName), "yyyy-MM-dd_HH-mm-ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out latestValue));
使用
OrderByDescending
按文件名对文件进行排序。然后从结果中取第一个:
var latestFile = di.GetFiles()
.OrderByDescending(f => GetDateFromFileName(f.FullName))
.First();
这里的GetDateFromFileName
是一个从文件名解析DateTime
的方法。大概是这样的:
private DateTime GetDateFromFileName(string fileName)
{
DateTime date;
if (DateTime.TryParseExact(GetFileNameDate(fileName),
"yyyy-MM-dd_HH-mm-ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
return date;
// default value if date cannot be parsed (you can use nullable DateTime also)
return DateTime.MinValue;
};
您还可以使用(可从NuGet获得)方法:
var latestFile = di.GetFiles().MaxBy(f => GetDateFromFileName(f.FullName));