public IEnumerable <DirectoryInfo> GetDirectories(bool includeHidden = false) { if (SearchOption == SearchOptionExtended.SubDirectories) { var topDirs = DirectoryInfo.GetDirectories("*", System.IO.SearchOption.TopDirectoryOnly); var allDirs = DirectoryInfo.GetDirectories("*", System.IO.SearchOption.AllDirectories); if (includeHidden) { return(allDirs.Where(n => !topDirs.Contains(n))); } else { return(allDirs.Where(n => !topDirs.Contains(n)).Where(n => !n.Attributes.HasFlag(FileAttributes.Hidden))); } } else { if (includeHidden) { return(DirectoryInfo.GetDirectories("*", SearchOption.As <System.IO.SearchOption>())); } else { return(DirectoryInfo.GetDirectories("*", SearchOption.As <System.IO.SearchOption>()).Where(n => !n.Attributes.HasFlag(FileAttributes.Hidden))); } } }