在某个文件之后获取 x 个文件

Getting x number of files after a certain file

我有一个包含 Jpeg 文件的文件夹,我希望在对它们进行排序后一次拉出 3-4 个,以便在它们最后写入时使用。问题是我想指定一个开始位置(按文件名)并且只从那里拉。

带图片的目录示例,

现在我想获取从b.jpg开始的3个文件,这意味着我想对文件进行排序,搜索特定文件(在本例中为b.jpg),然后取以下3个b.jpg 之后的文件(上例中的 c.jpg、d.jpg 和 e.jpg)。

如何使用 LINQ 或更好的方法找到 b.jpg 的索引,并在同一个查询中获取 3 个文件?

index of file/the files directly = Directory.GetFiles(pathToFiles, "*.jpg").Select(x => new FileInfo(x)).OrderByDescending(x => x.LastWriteTime)... ?

您需要查看 SkipWhile extension method, the Skip extension method, and then the Take 扩展方法。

此外,请改用 Directory.EnumerateFiles


var files = Directory.EnumerateFiles(pathToFiles, "*.jpg")
                     .Select(x => new FileInfo(x))
                     .OrderByDescending(x => x.LastWriteTime)
                     .SkipWhile(x => !String.Equals(x.Name, "b.jpg")
                     .Skip(1)
                     .Take(3);

基本上,一旦你有了你的顺序,跳过所有的东西直到你到达 "b.jpg" 文件,然后跳过那个文件,然后再拿下三个。


更新:现在我考虑了一下,EnumerateFiles 会有所帮助,但不完全是因为您通过排序否定了延迟执行。但是,它仍然是一个小优势(我认为)。