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

编辑(更多解释)

上面的解决方案称为“LINQ to Objects”。它是一种查询实现IEnumerableIEnumerable<T>接口的集合的方法。该GetDirectories方法返回Array有资格使用 Linq 的字符串。网上有很多关于 Linq 的资料。要了解 Linq 的强大功能,请浏览 MSDN 上的这些示例:101 Linq Samples。BTW 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 回答