2016-06-03 16 views
0

Мне нужно указать все каталоги с пути. Мне нужно получить только последний путь к подкаталогу, а не все пути.Каталог и подкаталог Фильтр в Linq

т.е.

pathbase/2016/01

мне не нужно pathbase/2016, но pathbase/2016/01

Теперь я использую этот код:

List<string> dirs = new List<string>(Directory.EnumerateDirectories(pathBase)); 
string[] entries = System.IO.Directory.GetDirectories(pathBase, "*", 
    SearchOption.AllDirectories); 

var listDir = from dir 
       in entries 

return listDir.ToList(); 

Какой тип фильтра я могу использовать в Linq, чтобы исключить этот каталог?

Спасибо.

+0

Так что вам нужно только лист каталогов? –

ответ

4

Вы имеете в виду, что вам нужны все каталоги листьев (каталоги, у которых нет подкаталогов)?

Если это так, следует сделать это

// First off, don't use GetDirectories on the static Directory class, it returns a string path and not a DirectoryInfo which isn't very usefull here, instead create a DirectoryInfo and go from there: 

var RootDirectory = new DirectoryInfo(pathBase); 
// Then queries all of it's subdirectories and filter on those 
var listDir = RootDirectory.GetDirectories("*",SearchOption.AllDirectories) 
    .Where(dir=>!dir.GetDirectories().Any()) 
    .ToList(); 
+0

отлично. Это работает. Как я могу получить имя и полный путь? Я новичок с linq. Спасибо –

+0

@ user1823851 у вас уже есть все, каждый элемент в listDir является DirectoryInfo, он имеет все свойства, которые вы хотите, в отличие от того, что вы изначально разместили (это только возвращаемые строки). Не забывайте отмечать это как ответ, если он отвечает на ваш исходный вопрос. –

+0

Как я могу отметить это как ответ? Спасибо –

Смежные вопросы