2013-04-10 36 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

相關問題