Вы используете счетчик для уровня и вызываете метод рекурсивно.
непроверенный код:
private static List<string> GetDirectories(string path, int level, string searchPattern = "*")
{
if (level == 0)
return Directory.GetDirectories(path, searchPattern, SearchOption.TopDirectoryOnly).ToList();
else
{
List<string> l = new List<string>();
foreach (string path2 in Directory.GetDirectories(path, searchPattern, SearchOption.TopDirectoryOnly))
l.AddRange(GetDirectories(path2, level - 1, searchPattern));
return l;
}
}
и звоните так:
return GetDirectories(yourPath, 1, yourSearchPattern);
или вы можете изменить это, чтобы развернуть, затем вернуться к следующему и т. Д., Но все еще используя счетчик.
Если вам нужны файлы (хотя в основной части вашего вопроса об этом не упоминалось, только заголовок), просто итерируйте результат, получая файлы в каждой из ваших папок.