如何在目录中找到两个最新文件?

时间:2016-12-12 11:15:24

标签: c#

我需要在目录中找到两个最新的文件。

我可以使用此代码找到第一个:

var directory = new DirectoryInfo("f:\\PAB\\bil_prev_ent");
var firstfile = (from f in directory.GetFiles("*.pdf")
                 orderby f.LastWriteTime descending
                 select f).First();

我想知道如何找到第二个文件。

4 个答案:

答案 0 :(得分:6)

使用Take(n)代替First()

var myfiles = (from f in directory.GetFiles("*.pdf")
                 orderby f.LastWriteTime descending
                 select f).Take(2);

以上将给出最近修改过的文件

如果您需要最近创建的文件,请使用 CreationTime

var myfiles = (from f in directory.GetFiles("*.pdf")
                           orderby f.CreationTime descending
                           select f).Take(2);

答案 1 :(得分:5)

创建一个查询,然后选择您需要的内容,例如:

var orderedFiles = directory.EnumerateFiles("*.pdf")
    .OrderByDescending(f => f.LastWriteTime);

var newestTwo = orderedFiles.Take(2).ToList();

我使用过EnumerateFiles,因为它不需要将所有文件加载到内存中。

答案 2 :(得分:0)

我需要的逻辑是“CreationTime”。 解决方案3号就像一个魅力,但我使用了ToArray。

所以正确的代码是:

var directory = new DirectoryInfo("f:\\PAB\\bil_prev_ent");
var orderedFiles = directory.EnumerateFiles("*.pdf").OrderByDescending(f => f.CreationTime);
var newestTwo = orderedFiles.Take(2).ToArray();

答案 3 :(得分:0)

答案2:

现在文件没有完整路径。

我如何拥有完整的道路?