按日期排序文件

cur*_*ity 30 .net c#

我使用这样的代码比较文件按日期排序..

FileInfo f = new FileInfo(name1);
FileInfo f1 = new FileInfo(name2);
if (f.Exists && f1.Exists)
   output = DateTime.Compare(f.LastWriteTime, f1.LastWriteTime);
Run Code Online (Sandbox Code Playgroud)

是否有更好更快的方式按日期排序?

我一次只能比较2个项目......

我无法从目录中获取所有文件.

Bro*_*ass 60

您可以使用LINQ:

var sortedFiles = new DirectoryInfo(@"D:\samples").GetFiles()
                                                  .OrderBy(f => f.LastWriteTime)
                                                  .ToList();
Run Code Online (Sandbox Code Playgroud)

  • 哦,我喜欢这个解决方案!对于noobs,要将最新文件放在顶部,请使用`OrderByDescending`而不是`OrderBy` (10认同)
  • 如果文件在初次创建后没有被修改,则LastWriteTime可能返回{1/1/1601 3:30:00 AM}。见[this](/sf/answers/1668741091/) (2认同)

Ale*_*sev 11

    DirectoryInfo directoryInfo = new DirectoryInfo(@"D:\Temp");
    var result = directoryInfo.GetFiles("*.*",SearchOption.AllDirectories).OrderBy(t => t.LastWriteTime).ToList();
Run Code Online (Sandbox Code Playgroud)


Viv*_*oel 9

那么使用Array.Sort呢?

string[] fileNames = Directory.GetFiles("directory ", "*.*");
DateTime[] creationTimes = new DateTime[fileNames.Length];
for (int i = 0; i < fileNames.Length; i++)
    creationTimes[i] = new FileInfo(fileNames[i]).CreationTime;
Array.Sort(creationTimes, fileNames);
Run Code Online (Sandbox Code Playgroud)