GetDirectories возвращает мне строку C#
Здравствуйте, я в настоящее время во время получения каталогов следующим образом:
dirs = Directory
.GetDirectories(@"C:\Users\jphillips\Desktop\test", "*", SearchOption.AllDirectories)
.Where(Path => reg.IsMatch(Path))
.ToList();
Благодаря этому я могу отфильтровать все подкаталоги в каталоге и отфильтровать те, которые мне нужны, с помощью регулярного выражения, которое я предоставил ниже:
Regex reg = new Regex(@"\d+(\.\d+)+");
Моя проблема с моим новым списком строк каталогов. Я хочу использовать для них функции directoryinfo, такие как Parent, и получать каталоги этих каталогов. Есть ли способ конвертировать мои строковые пути в типы directyinfo. Спасибо!
3 ответа
Вы можете создать DirectoryInfo
для корневого пути, и работать с этим вместо путей:
var rootDir = new DirectoryInfo(@"C:\Users\jphillips\Desktop\test");
dirs = rootDir.GetDirectories("*", SearchOption.AllDirectories)
.Where(d => reg.IsMatch(d.FullName))
.ToList();
Вы можете просто использовать класс DirectoryInfo для этого и передать свойство DirectoryInfo.Name своему регулярному выражению вместо всего экземпляра DirectoryInfo.
DirectoryInfo di = new DirectoryInfo(@"C:\Temp");
DirectoryInfo[] subDirectories = di.GetDirectories().Where(d => reg.IsMatch(d.Name));
Итак, так как Directory.GetDicrectories возвращает массив строк, вы можете просто добавить select в ваш оператор LINQ
dirs = Directory.GetDirectories(@"C:\Users\jphillips\Desktop\test", "*",
SearchOption.AllDirectories).Where(Path => reg.IsMatch(Path)).Select(x => new
DirectoryInfo(x)).ToList();