【发布时间】:2014-04-30 17:38:03
【问题描述】:
我正在尝试使用 LINQ 构建一个并行查询,以获取某个目录及其子目录中的所有文本文件和一个 CSV 文件。我想排除隐藏文件、临时文件和系统文件甚至不被查询考虑,以希望加快速度。 (这个目录很大。)虽然我在这里,但我还想排除几个子目录。这是我的代码:
ParallelQuery<string> getFiles =
Directory.EnumerateFiles(@"C:\", "*", SearchOption.AllDirectories)
.AsParallel().Where(f => (
FileAttributes.Hidden == 0 &&
FileAttributes.System == 0 &&
FileAttributes.Temporary == 0 &&
!Path.GetDirectoryName(f).Contains("TempDir") &&
!Path.GetDirectoryName(f).Contains("OtherDir") &&
(Path.GetExtension(f).ToUpper() == ".TXT" ||
Path.GetFileName(f) == "GoodFile.csv")));
我尝试使用对this question 的接受答案作为起点。在 Visual Studio(2013 Express Desktop,如果重要的话)中,我在第 7-9 行得到一个绿色下划线,其中不包括某些子目录并将结果限制为 .txt 文件,告诉我Unreachable expression code detected。但是,包含 .csv 文件的行似乎没问题。执行查询不会返回任何结果,也不会抛出任何异常。
我对 LINQ 还是很陌生,所以如果这里的问题非常明显,请原谅我。任何人都可以对此有所了解吗?或者也许有更好的方法来解决这个问题?
【问题讨论】:
标签: c# linq filesystems file-attributes