我有一个带有Jpeg文件的文件夹,我想要在最后一次编写它们之后将它们一次拉3-4。问题是我想指定一个起始位置(按文件名)并且只从那里拉出来。
带图片的目录示例
现在我想从b.jpg开始获取3个文件,这意味着我想订购文件,搜索特定文件(在本例中为b.jpg),然后获取b之后的3个文件。 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)... ?
答案 0 :(得分:0)
您需要查看SkipWhile
扩展方法,Skip
扩展方法,然后是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
会有所帮助,但不完全是因为你通过排序来否定延迟执行。但是,它仍然只是一个小优势(我认为)。