良好的lambda表达式或更好的减少每个循环的方法

Mal*_*olm 4 .net c#

我想获取根文件夹的子文件夹.我能够通过以下代码获得它.但是当子文件夹中有一个子文件夹时我会遇到一个问题,而且我会为每个循环写一个秒.但是如果第二个子文件夹下面有一个子文件夹怎么办呢.因此每个循环都会有一个infinte,所以我必须克服它.任何帮助都是值得的.谢谢.

foreach (Folder.Folder folder in FolderService.Instance.GetSubFolders(userContext, folderID))
            {
                folderById.Add(folder.FolderID, folder);
                foreach (Folder.Folder sfolder in FolderService.Instance.GetSubFolders(userContext, folder.FolderID))
                {
                    folderById.Add(sfolder.FolderID, sfolder);
                }
            }
Run Code Online (Sandbox Code Playgroud)

Ant*_*lev 10

递归的理想场所:

... TraverseFolder(rootFolderID, userContext)
{
    var folderById = new ...;
    TraverseFolder(folderById, rootFolderID, userContext);

    return folderById;
}

void TraverseFolder(folderById, folderID, userContext)
{
    var folders = FolderService.Instance.GetSubFolders(userContext, folderID);
    foreach(var folder in folders)
    {
        folderById.Add(folder.FolderID, folder);
        TraverseFolder(folder.FolderID);
    }
}
Run Code Online (Sandbox Code Playgroud)

从理论上讲,你可以有递归的lambdas,但它们太复杂了.