DirectoryInfo - DeleteDirectoriesWhere

A DirectoryInfo extension method that deletes the directories where.

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);
    }
	
	//C# Extension Method - DirectoryInfo - DeleteDirectoriesWhere
	DirectoryName.ToDirectoryInfo().DeleteDirectoriesWhere(x => x.Name.Contains("Framework"));
	
	Console.WriteLine("\n\nData in current directory after calling DeleteDirectoriesWhere method.\n\n");

	//C# Extension Method - DirectoryInfo - GetFileSystemEntries
	entries = DirectoryName.ToDirectoryInfo().GetFileSystemEntries();
	
    foreach (var entry in entries)
    {
         Console.WriteLine(entry);
    }
}

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");
	File.Create(DirectoryName + "\\EntityFramework.md");
	File.Create(DirectoryName + "\\oldTest.txt");
}

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

public static partial class Extensions
{
    /// <summary>
    ///     A DirectoryInfo extension method that deletes the directories where.
    /// </summary>
    /// <param name="obj">The obj to act on.</param>
    /// <param name="predicate">The predicate.</param>
    public static void DeleteDirectoriesWhere(this DirectoryInfo obj, Func<DirectoryInfo, bool> predicate)
    {
        obj.GetDirectories().Where(predicate).ForEach(x => x.Delete());
    }

    /// <summary>
    ///     A DirectoryInfo extension method that deletes the directories where.
    /// </summary>
    /// <param name="obj">The obj to act on.</param>
    /// <param name="searchOption">The search option.</param>
    /// <param name="predicate">The predicate.</param>
    public static void DeleteDirectoriesWhere(this DirectoryInfo obj, SearchOption searchOption, Func<DirectoryInfo, bool> predicate)
    {
        obj.GetDirectories("*.*", searchOption).Where(predicate).ForEach(x => x.Delete());
    }
}