2017-08-09 69 views
0

我正在加速目录枚举,并发现了一个很好的代码片段。并行FileEnumeration包括顶级目录

FileInfo[] files= dirInfo.EnumerateDirectories() 
      .AsParallel() 
      .SelectMany(di => di.EnumerateFiles("*.*", SearchOption.AllDirectories)).ToArray(); 

我的问题是这似乎并没有返回顶层目录中的文件,所以我最终添加了;并且组合数组。

我想知道是否有更好的方法来一次收集所有的fileInfos,包括顶级目录,同时仍然大写AsParallel()?

回答

1

使用此:

FileInfo[] files = dirInfo.EnumerateDirectories() 
        .AsParallel() 
        .SelectMany(di => di.EnumerateFiles("*.*", SearchOption.AllDirectories)) 
        .ToArray() 
        .Union(dirInfo.EnumerateFiles()) 
        .ToArray();