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

1 に答える 1

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));
于 2013-04-10T06:27:26.857 に答える