如何返回具有最早日期时间的顶级FileInfo对象?

时间:2012-02-07 19:54:49

标签: c# linq

我需要能够在本地目录中查询我添加到它的文件。包含LINQ查询的方法将返回其创建日期最早的文件。因此,操作顺序基本上是先进先出方案。

请注意,我正在返回一个列表,因为要求可能会更改为返回多个文件。

我提出的实现大部分内容的代码如下:

public static List<FileInfo> GetNextFileToProcess(DirectoryInfo directory)
{
    var files = from f in directory.GetFiles()
                orderby f.CreationTime ascending
                select f;

    return files.Cast<FileInfo>().ToList();
}

问题是我没有将此列表限制为在确定排序顺序后仅包含并返回索引为0的文件。

我是否需要where子句来限制返回最旧的文件或什么?

2 个答案:

答案 0 :(得分:3)

var files = (from f in directory.EnumerateFiles()
             orderby f.CreationTime ascending
             select f).Take(1);

答案 1 :(得分:2)

您已经说过要在以后需要多个文件的情况下返回列表 - 那么为什么还要限制它呢?您可以使用Take(1),但为什么不将所有内容都返回给调用者并让他们决定他们想要什么?

如果您要将其限制为“包含一个元素的列表”,您可以将其改为仅返回FileInfo - 如果您想要返回超过{1}},则需要修改代码无论如何一个条目。