2013-06-19 1 views
2

Возможно, это по дизайну, но я хочу иметь C: \ в корневом каталоге, даже если у меня уже есть эта информация.DirectoryInfo [] SearchOption.AllDirectories не включает корневой каталог?

DirectoryInfo Dinfo = new DirectoryInfo(@"C:\"); 
DirectoryInfo[] directories = Dinfo .GetDirectories("*.*", SearchOption.AllDirectories); 

Так как же вы получаете каталоги, чтобы включить @ "C: \

+1

FYI, это дизайн Из документации [ DirectoryInfo.GetDirectories()] (http://msdn.microsoft.com/en-us/library/s7xk2b58%28v=vs.100%29.aspx/html): _ "Возвращает подкаталоги текущего каталога. Если нет подкаталогов, этот метод возвращает пустой массив. "_ –

+0

@GrantWinney немой дизайн на мой взгляд –

+2

@Mike: Почему метод, который рекурсивно ищет детей, включает родителя? У вас уже есть родительский элемент, следовательно, это не проблема включите его самостоятельно, если хотите, но сложнее и менее эффективно удалить то, что вы не хотите включать. –

ответ

3

Вы можете добавить его Concat:.

DirectoryInfo[] directories = new[]{Dinfo} 
    .Concat(Dinfo.EnumerateDirectories("*.*", SearchOption.AllDirectories)) 
    .ToArray();