2010-12-29 21 views
2

Directory.GetDirectoriesメソッドを使用して、いくつかの除外を含むすべてのディレクトリを取得したいと考えています。特に、ハイフンを含むディレクトリを除外する必要があります。私はすでに検索パターンとして動作しない正規表現を見つけました。どの検索パターンを使用しますか?c#directory.getdirectoriesからハイフンを除外

答えて

3

おそらくlinqクエリで十分でしょうか?上記

//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(詳細な説明)

溶液を"LINQ to Objects"呼ばれます。 IEnumerableまたはIEnumerable<T>インターフェイスを実装しているコレクションにクエリを出す方法です。 GetDirectoriesメソッドは、Linqを使用できる文字列のを返します。 Linqについてはインターネット上にたくさんのものがあります。 LinqのパワーをMSDNの次の例を見てみよう:101 Linq Samples。 BTW Linqは、XML、データベースetxなどのさまざまなソースからデータを取得するのに便利です。

+0

私は新しいコンピュータサイエンスの学生です。私はそのコードの多くを認識しません。私はそれを理解するのに役立つ資料を参照できますか? – Paul

+0

.NET 4.0を使用している場合は、代わりに['Directory.EnumerateDirectories()'](http://msdn.microsoft.com/en-us/library/dd383304.aspx)を使用することを強くお勧めします。 –

+0

@Paul私はあなたに役立つより多くの情報をまとめました。 – 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

ないLINQの道:

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); 
      } 
     } 
    } 
} 
関連する問題