I am trying to write a method that gets files from a folder, orders it by creation time, takes the top five latest files and deletes the rest.
Any help will be much appreciated, my code that i have is as follows:
DirectoryInfo Dir = new DirectoryInfo(DirectoryPath);
FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories);
var x = FileList.OrderByDescending(file => file .CreationTime).Take(5);
How do I amend this code to delete all the other files?
As you are keeping the first N
and doing something else with the rest, it would be better to just loop through everything, throwing the first N
into a separate list while calling Delete()
on the rest.
var query = fileList.OrderByDescending(file => file.CreationTime);
var keepers = new List<FileInfo>();
var i = 0;
foreach (var file in query)
{
if (i++ < N)
{
keepers.Add(file);
}
else
{
file.Delete();
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With