DirectoryInfo - DeleteOlderThan

A DirectoryInfo extension method that deletes the older than.

Try it

public static string DirectoryName = "Main Directory";

public static void Main()
{
	CreateFilesAndDirectories();
	
	//C# Extension Method - DirectoryInfo - GetFileSystemEntries
	var entries = DirectoryName.ToDirectoryInfo().GetFileSystemEntries();

    foreach (var entry in entries)
    {
         Console.WriteLine(entry);
    }
	
	var date = DateTime.Now.TimeOfDay;
	
	//C# Extension Method - DirectoryInfo - DeleteOlderThan
	DirectoryName.ToDirectoryInfo().DeleteOlderThan(date);

}

private static void CreateFilesAndDirectories()
{
	DirectoryName.ToDirectoryInfo().Create();
	DirectoryName.ToDirectoryInfo().CreateSubdirectory("Entity Framework");
	DirectoryName.ToDirectoryInfo().CreateSubdirectory(".Net Framework");
	DirectoryName.ToDirectoryInfo().CreateSubdirectory("Java");
	DirectoryName.ToDirectoryInfo().CreateSubdirectory("SQL");
	string file1 = DirectoryName + "\\EntityFramework.txt";
    string file2 = DirectoryName + "\\oldTest.txt";
    file1.ToFileInfo().WriteAllText("EF text");
    file2.ToFileInfo().WriteAllText("text");
}

View Source
using System;
using System.IO;
using System.Linq;

public static partial class Extensions
{
    /// <summary>
    ///     A DirectoryInfo extension method that deletes the older than.
    /// </summary>
    /// <param name="obj">The obj to act on.</param>
    /// <param name="timeSpan">The time span.</param>
    public static void DeleteOlderThan(this DirectoryInfo obj, TimeSpan timeSpan)
    {
        DateTime minDate = DateTime.Now.Subtract(timeSpan);
        obj.GetFiles().Where(x => x.LastWriteTime < minDate).ToList().ForEach(x => x.Delete());
        obj.GetDirectories().Where(x => x.LastWriteTime < minDate).ToList().ForEach(x => x.Delete());
    }

    /// <summary>
    ///     A DirectoryInfo extension method that deletes the older than.
    /// </summary>
    /// <param name="obj">The obj to act on.</param>
    /// <param name="searchOption">The search option.</param>
    /// <param name="timeSpan">The time span.</param>
    public static void DeleteOlderThan(this DirectoryInfo obj, SearchOption searchOption, TimeSpan timeSpan)
    {
        DateTime minDate = DateTime.Now.Subtract(timeSpan);
        obj.GetFiles("*.*", searchOption).Where(x => x.LastWriteTime < minDate).ToList().ForEach(x => x.Delete());
        obj.GetDirectories("*.*", searchOption).Where(x => x.LastWriteTime < minDate).ToList().ForEach(x => x.Delete());
    }
}