如何使用c#从特定的子目录中获取文件?

时间:2017-10-23 01:40:00

标签: c# linq

我正在尝试将名为 abcd 的子目录中的所有* .html文件添加到数组中。 给定的路径可以在多个子目录中包含多个* .html文件,甚至在根目录中(即在用户给定路径内),但我只想要那些在特定命名的子目录中的* .html文件(< strong> abcd )使用LINQ。 这就是我试过的

string workingPath = @"D:\Testing";  
            string[] myFiles = workingPath.Select(dirs => Directory.GetDirectories(workingPath)  
                                           .Select(folders => (from item in Directory.GetDirectories(folders, "abcd", SearchOption.AllDirectories)  
                                                               .Select(item => Directory.GetFiles(item, "*.html"))  
                                                              )));

我收到错误

  

查询正文必须以select子句或group子句结束(CS0742)

。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您的代码看起来不会编译。从workingPath.Select开始将返回一组字符,你试图再次迭代它,考虑到你的要求,这是没有意义的。

你需要这样的东西

var files = new List<string>();
if (Directory.Exists(workingPath))
{
   foreach (var f in Directory.GetDirectories(workingPath, "abcd",
                                                SearchOption.AllDirectories))
   {
       files.AddRange(Directory.GetFiles(f, "*.html"));
   }
}

你也可以使用LINQ

做一个班轮
var files2 = Directory.GetDirectories(workingPath, "abcd", SearchOption.AllDirectories)
                     .SelectMany(d => Directory.GetFiles(d, "*.html")).ToArray();