我正在尝试将名为 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)
。我该如何解决这个问题?
答案 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();