public virtual IEnumerable<string> GetDirectories(string path)
{
return Paths.GroupBy(f => Path.GetDirectoryName(f.Key))
.SelectMany(g => InternalGetDirectories(g.Key))
.Where(f => !String.IsNullOrEmpty(f) &&
Path.GetDirectoryName(f).Equals(path, StringComparison.OrdinalIgnoreCase))
.Distinct();
}