2017-08-09 59 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();