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));