Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 目录问题中的列表文件_C#_.net_Visual Studio 2008 - Fatal编程技术网

C# 目录问题中的列表文件

C# 目录问题中的列表文件,c#,.net,visual-studio-2008,C#,.net,Visual Studio 2008,我使用的是VSTS2008+C++.NET3.0。我想按创建时间枚举目录中的所有文件,即先枚举最近创建的文件,最后枚举较旧的文件。有什么想法可以实现这一点吗?我可能会使用LINQ和一个列表。。。像这样的方法应该会奏效: DirectoryInfo di = new DirectoryInfo("YourPath"); List<FileInfo> files = di.GetFiles().OrderBy(f => f.CreationTime).ToList(); f

我使用的是VSTS2008+C++.NET3.0。我想按创建时间枚举目录中的所有文件,即先枚举最近创建的文件,最后枚举较旧的文件。有什么想法可以实现这一点吗?

我可能会使用LINQ和一个列表。。。像这样的方法应该会奏效:

 DirectoryInfo di = new DirectoryInfo("YourPath");
 List<FileInfo> files = di.GetFiles().OrderBy(f => f.CreationTime).ToList();

 foreach (FileInfo file in files)
        {
            //do something
        }
DirectoryInfo di=newdirectoryinfo(“YourPath”);
List files=di.GetFiles().OrderBy(f=>f.CreationTime.ToList();
foreach(文件中的文件信息文件)
{
//做点什么
}
类似的东西


System.IO.FileInfo[] array = new System.IO.DirectoryInfo("directory_path").GetFiles();
Array.Sort(array, delegate(System.IO.FileInfo f1, System.IO.FileInfo f2)
            {
                return f2.CreationTimeUtc.CompareTo(f1.CreationTimeUtc);
            });

试着这样做:

DirectoryInfo di = new DirectoryInfo("path to folder");
FileInfo[] files = di.GetFiles();
IOrderedEnumerable<FileInfo> enumerable = files.OrderBy(f => f.CreationTime);

foreach (FileInfo info in enumerable)
{
  // do stuff...        
}
DirectoryInfo di=newdirectoryinfo(“文件夹路径”);
FileInfo[]files=di.GetFiles();
IOrderedEnumerable enumerable=files.OrderBy(f=>f.CreationTime);
foreach(可枚举文件中的文件信息)
{
//做些事情。。。
}
DirectoryInfo baseFolder=newdirectoryinfo(“folderName”);
FileInfo[]files=baseFolder.GetFiles(“”);

对于(inti=1;i编辑:更新,这里有一个非LINQ解决方案

FileInfo[] files = new DirectoryInfo("directory").GetFiles();
Array.Sort(files, delegate(FileInfo f1, FileInfo f2) {
    return f2.CreationTime.CompareTo(f1.CreationTime);
});
以上内容将按最新到最旧排序。若要按最旧到最新排序,请将委托更改为:
返回f1.CreationTime.CompareTo(f2.CreationTime);


LINQ解决方案:

FileInfo[] files = new DirectoryInfo("directory").GetFiles();
var results = files.OrderByDescending(file => file.CreationTime);

使用OrderByDescending按最近的CreationTime排序,否则使用OrderBy按最早的CreationTime排序。

很抱歉,我使用的是.Net 3.0,不能使用LINQ。任何基于.Net 3.0的解决方案?很抱歉,我使用的是.Net 3.0,不能使用LINQ。任何基于.Net 3.0的解决方案?根据您对另一个答案的评论添加了非LINQ解决方案我不这样做看到了重写所有内容的意义了吗?因为框架有很多东西需要排序集合!您不需要按照要求先恢复顺序以获得更新的文件吗?第二点:对于VS2008,您可以使用lambdas,即使是在2.0或3.0中!使其更易于阅读…但是您只能在生成过程使用MsBuild 3.5时使用它们(例如,请注意CI服务器…)哦,还有“var”关键字;o)
FileInfo[] files = new DirectoryInfo("directory").GetFiles();
var results = files.OrderByDescending(file => file.CreationTime);