2010-12-29 9 views
2

Ich möchte die Directory.GetDirectories Methode verwenden, um alle Verzeichnisse mit einigen Ausnahmen zu erhalten. Insbesondere muss ich Verzeichnisse ausschließen, die einen Bindestrich enthalten. Ich habe bereits herausgefunden, dass reguläre Ausdrücke nicht als Suchmuster funktionieren. Welches Suchmuster würde ich verwenden?C# Bindestrich aus Verzeichnis.getdirectories ausschließen

Antwort

3

Vielleicht wäre eine LINQ-Abfrage ausreichend?

//query notation 
    var result = from d in Directory.GetDirectories(path) 
       where !d.Contains("-") 
       select d; 
    //'dot' notation 
    var result2 = Directory.GetDirectories(path) 
        .Where(dir => !dir.Contains("-")); 

EDIT (Weitere Erläuterungen zu bekommen)

Die Lösung oben wird "LINQ to Objects" genannt. Es ist eine Möglichkeit, Abfragen abzufragen, die die Schnittstelle IEnumerable oder IEnumerable<T> implementieren. Die Methode GetDirectories gibt Array der Zeichenfolge zurück, die für die Verwendung von Linq geeignet ist. Es gibt eine Menge über Linq im Internet. Um zu sehen, die Macht von Linq flick durch diese Beispiele auf MSDN: 101 Linq Samples. BTW Linq ist nützlich, um Daten aus verschiedenen Quellen wie XML, Datenbanken etx zu erhalten.

+0

Ich bin ein neuer Informatikstudent. Ich erkenne nicht viel von diesem Code. Kannst du auf etwas Material verweisen, das mir hilft, es zu verstehen? – Paul

+0

Wenn Sie .NET 4.0 verwenden, empfehle ich stattdessen [Directory.EnumerateDirectories() '] (http://msdn.microsoft.com/en-us/library/dd383304.aspx). –

+0

@Paul Ich habe weitere Informationen beigefügt, die für Sie nützlich sein könnten. – nan

2
System.Collections.ObjectModel.Collection<string> resultDirs=new System.Collections.ObjectModel.Collection<string>(); 
      foreach (string dir in System.IO.Directory.GetDirectories("path")) 
      { 
       if (!dir.Contains("-")) resultDirs.Add(dir); 
      } 
1

Nicht LINQ Weg:

static void Main(string[] args) 
    { 

     string StartingPath = "c:\\"; 

     List<string> mydirs = new List<string>(); // will contains folders not containing "-" 

     foreach (string d in Directory.GetDirectories(StartingPath)) 
     {        
      if (!(d.Contains("_"))) 
      { 
       mydirs.Add(d); 
      }     

      foreach (string dir in mydirs) 
      { 
       Console.WriteLine(dir); 
      } 
     } 
    } 
} 
Verwandte Themen