获取最新的N个文件并删除其余文件

我正在尝试编写一个从文件夹中获取文件的方法,按创建时间对其进行排序,获取前五个最新文件并删除其余文件。

任何帮助将不胜感激,我的代码如下:

DirectoryInfo Dir = new DirectoryInfo(DirectoryPath); FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories); var x = FileList.OrderByDescending(file => file .CreationTime).Take(5); 

如何修改此代码以删除所有其他文件?

当你保留第一个N并用其他东西做其他事情时,最好循环遍历所有内容,将第一个N抛入一个单独的列表,同时在其余部分调用Delete()

 var query = fileList.OrderByDescending(file => file.CreationTime); var keepers = new List(); var i = 0; foreach (var file in query) { if (i++ < N) { keepers.Add(file); } else { file.Delete(); } } 

这是我做的:

 var directory = new DirectoryInfo(DirectoryPath); var query = directory.GetFiles("*.bmp", SearchOption.AllDirectories); foreach (var file in query.OrderByDescending(file => file.CreationTime).Skip(1)) { file.Delete(); }