在c#文件夹中查找最新创建的文件的好方法是什么?

在c#文件夹中查找最新创建的文件的好方法是什么?,c#,windows,linq,filesystems,directory,C#,Windows,Linq,Filesystems,Directory,我有一个网络文件夹,可以包含多达10000个文件(通常大约5000个) 使用c#获取该文件夹中最近创建的文件的文件路径的最有效方法是什么 目前我正在使用下面的方法,但不知道是否有更快的方法 谢谢 DirectoryInfo di = new DirectoryInfo(xmlFileLocation); var feedFiles = di.GetFiles("*.xml"); var sortedFeedFile = from s in feedFiles

我有一个网络文件夹,可以包含多达10000个文件(通常大约5000个)

使用c#获取该文件夹中最近创建的文件的文件路径的最有效方法是什么

目前我正在使用下面的方法,但不知道是否有更快的方法

谢谢

DirectoryInfo di = new DirectoryInfo(xmlFileLocation);
var feedFiles = di.GetFiles("*.xml");
var sortedFeedFile = from s in feedFiles
                     orderby s.CreationTime descending
                     select s;

if(sortedFeedFile.Count() > 0){
    mostRecentFile = sortedFeedFile.First();
}
这可能有助于。。。

对文件进行排序需要花费大量时间。如果您所需要的是最近创建的,那么只需扫描文件并找到最新的-O(n)就更快了。

< P>我认为您最好的机会是考虑创建Win32 API调用——这可能是也可能不是更快,但它可能值得研究。请参阅以执行此操作。

此操作获取文件信息,如果没有文件,则为null,无需排序:

var feedFiles = di.GetFiles("*.xml");
FileInfo mostRecentFile = null;
if (feedFiles.Any())
{
    mostRecentFile = feedFiles
        .Aggregate((x, c) => x.CreationTime > c.CreationTime ? x : c);
}

不是答案,但如果删除Count(),则可以使用FirstOrDefault并执行空检查。不过,我怀疑这会给你带来多大的性能提升!在某些情况下,你可能会考虑使用任何()代替。我非常怀疑排序时间是相关的,但是它肯定是在分析器下面看的。有趣的绕过排序的技术——没有想到。就我个人而言,虽然我不认为排序是一个性能问题。