在某个文件之后获取 x 个文件
Getting x number of files after a certain file
我有一个包含 Jpeg 文件的文件夹,我希望在对它们进行排序后一次拉出 3-4 个,以便在它们最后写入时使用。问题是我想指定一个开始位置(按文件名)并且只从那里拉。
带图片的目录示例,
- a.jpg
- b.jpg
- c.jpg
- d.jpg
- e.jpg
- f.jpg
- 等直到 j.jpg
现在我想获取从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
会有所帮助,但不完全是因为您通过排序否定了延迟执行。但是,它仍然是一个小优势(我认为)。
我有一个包含 Jpeg 文件的文件夹,我希望在对它们进行排序后一次拉出 3-4 个,以便在它们最后写入时使用。问题是我想指定一个开始位置(按文件名)并且只从那里拉。
带图片的目录示例,
- a.jpg
- b.jpg
- c.jpg
- d.jpg
- e.jpg
- f.jpg
- 等直到 j.jpg
现在我想获取从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
会有所帮助,但不完全是因为您通过排序否定了延迟执行。但是,它仍然是一个小优势(我认为)。