C#中的递归迭代

lea*_*gdb 3 c# linq

我有一个自定义对象,其中包含返回根目录中所有目录和文件名的方法

string[] dirlist = obj.GetDirectories();

//which returns all dir names in root

string[] filelist = obj.GetFiles();

//which return all file names in root
Run Code Online (Sandbox Code Playgroud)

我无法修改这些方法.一旦我得到了dirlist,我如何获得其中所有子目录的列表以及子目录中的文件,忽略安全异常.它可以嵌套到多个级别..NET 4中有什么东西吗?

更新:string [] dirList也可以读作List dirlist.请提供一个使用.NET最新功能的解决方案

DirectoryOne  
 - SubDirOne  
 - SubDirTwo  
     - FileOne  
     - FileTwo
     - SubDirThree      
DirectoryTwo
DirectoryOne
Run Code Online (Sandbox Code Playgroud)

Dan*_* T. 9

已经有内置的.NET方法来执行此操作:

// get all files in folder and sub-folders
Directory.GetFiles(path, "*", SearchOption.AllDirectories);

// get all sub-directories
Directory.GetDirectories(path, "*", SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)

不知怎的,我觉得这不是你想要的解决方案.

更新: 我想我可能知道你要问的是什么,因为你把它标记为LINQ.如果要获取给定目录列表的所有子目录和子文件夹的列表,可以使用以下代码:

// get all files given a collection of directories as a string array
dirList.SelectMany(x => Directory.GetFiles(x, "*", SearchOption.AllDirectories));

// get all sub-directories given a collection of directories as a string array
dirList.SelectMany(x => x.Directory.GetDirectories(x, "*", SearchOption.AllDirectories));
Run Code Online (Sandbox Code Playgroud)