2010-05-06 9 views
1

Je voudrais savoir s'il y a une meilleure alternative à mon code suivant (de préférence en utilisant LINQ)Liste 3 niveaux sous-répertoires en utilisant C# LINQ profond

  #region List and filter directories to only 3 levels deep 
      // List all subdirectories within main directory 
      string[] folders = Directory.GetDirectories(@"C:\pdftest\", "*" ,SearchOption.AllDirectories); 
      List<string> subdirectories = new List<string>(); 

      //Filter away all main directories, now we are left with subdirectories 3 levels deep 
      for (int i = 0; i<folders.Length; i++) 
      { 
       int occurences = folders[i].Split('\\').Length-1; 
       if (occurences==4) 
        subdirectories.Add(folders[i]);    
      } 
      #endregion 

Répondre

2

Untested, mais quelque chose comme ça devrait le faire.

 string[] subDirectories = Directory.GetDirectories(@"C:\pdftest\", "*", SearchOption.AllDirectories).Where(folder => folder.Split('\\').Length <= 4).ToArray(); 
+0

L'idée est pas mal, mais ce qui se passe si vous démarrez dans le dossier C: \ Program Files \ Microsoft.NET \ SDK \ CompactFramework – Oliver

+0

je suis simplement en train de reproduire la fonctionnalité qui était dans le code d'origine. –

Questions connexes