2

Directory.GetDirectoriesメソッドを使用して、いくつかの除外を含むすべてのディレクトリを取得したいと思います。特に、ハイフンが含まれているディレクトリを除外する必要があります。正規表現が検索パターンとして機能しないことはすでにわかっています。どの検索パターンを使用しますか?

4

3 に答える 3

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("-"));

編集(詳細説明)

上記のソリューションは「LINQtoObjects」と呼ばれます。IEnumerableこれは、実装またはIEnumerable<T>インターフェースするコレクションを照会する方法です。GetDirectoriesメソッドは、Linqを使用するのに適した文字列を返しますArray。インターネット上にはLinqに関するものがたくさんあります。Linqのパワーを確認するには、MSDNのこれらの例をフリックしてください:101LinqSamples。ところで、Linqは、XML、データベースなどのさまざまなソースからデータを取得するのに役立ちます。

于 2010-12-29T07:48:52.167 に答える
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);
            }
于 2010-12-29T08:18:55.187 に答える
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);
            }
        }
    }
}
于 2010-12-29T08:30:56.903 に答える