2013-04-10 84 views
1

我需要以文件名中的最大日期获取文件。文件从文件名中以最大日期获取文件

例子:zipFiles_2013-04-09_17-04-37.zip

DirectoryInfo di = new DirectoryInfo(FilePath); 

我只能得到latestValue日期。我如何获得FullName或Name?

DateTime latestValue; 
di.GetFiles().Max(x => DateTime.TryParseExact(GetFileNameDate(x.FullName), "yyyy-MM-dd_HH-mm-ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out latestValue)); 

回答

3

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

您还可以使用morelinq(可从的NuGet)MaxBy方法:

var latestFile = di.GetFiles().MaxBy(f => GetDateFromFileName(f.FullName)); 
+1

非常感谢你 – user2264703 2013-04-10 06:38:50