从目录中获取x个最新文件

use*_*192 2 .net c# file

我想实现Directory作为参数接收的函数,integer它代表文件的数量并从中返回最新的文件Direttory

所以我有这个功能:

    public static IEnumerable<string> EnumerateDirectories(string parentDirectory, string searchPattern, SearchOption searchOpt, int numberOfFiles)
    {
        try
        {
            var directories = Enumerable.Empty<string>();
            if (searchOpt == SearchOption.AllDirectories)
            {
                directories = Directory.EnumerateDirectories(parentDirectory).SelectMany(x => EnumerateDirectories(x, searchPattern, searchOpt));
            }
            return directories.Concat(Directory.EnumerateDirectories(parentDirectory, searchPattern));
        }
        catch (UnauthorizedAccessException)
        {
            return Enumerable.Empty<string>();
        }
    }
Run Code Online (Sandbox Code Playgroud)

可以使用这个Linq:

var directory = new DirectoryInfo("C:\\MyDirectory");
var myFile = (from f in directory.GetFiles()
             orderby f.LastWriteTime descending
             select f).First();
Run Code Online (Sandbox Code Playgroud)
  1. 我可以控制返回文件的数量还是仅返回?
  2. 如果我的文件夹只包含2个文件并且我想要3个最新文件,会发生什么?

Tim*_*ter 7

你可以使用Enumerable.Take:

var myFiles = (from f in directory.GetFiles()
              orderby f.LastWriteTime descending
              select f).Take(numberOfFiles);
Run Code Online (Sandbox Code Playgroud)

或者在方法语法中:

myFiles = directory.GetFiles().OrderByDescending(f => f.LastWriteTime).Take(numberOfFiles);
Run Code Online (Sandbox Code Playgroud)

这将返回尽可能多的文件(最大numberOfFiles).如果你想要三个,但只有两个你得到两个.