2016-05-24 3 views
1

Bonjour Im actuellement au cours Répertoires comme suit:GetDirectories me renvoie une chaîne C#

dirs = Directory 
    .GetDirectories(@"C:\Users\jphillips\Desktop\test", "*", SearchOption.AllDirectories) 
    .Where(Path => reg.IsMatch(Path)) 
    .ToList(); 

Avec cela, je peux filtrer à travers tous les sous-répertoires dans un répertoire et filtrer ceux que je veux avec le regex I ci-dessous :

Regex reg = new Regex(@"\d+(\.\d+)+"); 

Mon problème est avec ma nouvelle liste de chaînes de chemins de répertoire. Je veux utiliser les fonctions de directoryinfo sur eux comme Parent et obtenir des répertoires de ces répertoires à tant de choses. Y a-t-il un moyen de convertir mes chemins de chaînes en types directyinfo? Merci !

Répondre

4

Vous pouvez créer un DirectoryInfo pour le chemin racine, et travailler avec ce lieu des chemins:

var rootDir = new DirectoryInfo(@"C:\Users\jphillips\Desktop\test"); 
dirs = rootDir.GetDirectories("*", SearchOption.AllDirectories) 
       .Where(d => reg.IsMatch(d.FullName)) 
       .ToList(); 
0

Eh bien, puisque Directory.GetDicrectories retourne un tableau de chaînes, ce que vous pouvez faire est d'ajouter une sélection à votre déclaration LINQ

dirs = Directory.GetDirectories(@"C:\Users\jphillips\Desktop\test", "*", 
     SearchOption.AllDirectories).Where(Path => reg.IsMatch(Path)).Select(x => new 
     DirectoryInfo(x)).ToList(); 
+0

Il n'y a aucune raison de le faire puisque DirectoryInfo possède déjà cette fonctionnalité. – DVK

1

Vous pouvez simplement utiliser la classe DirectoryInfo pour ce faire, et nourrir la propriété DirectoryInfo.Name à votre regex au lieu de toute instance DirectoryInfo.

DirectoryInfo di = new DirectoryInfo(@"C:\Temp"); 
DirectoryInfo[] subDirectories = di.GetDirectories().Where(d => reg.IsMatch(d.Name));