My Solution to iterating over a directory.

Note :
  • I'm using the FolderInfo class (which i wrote myself) instead of the DirectoryInfo class as FolderInfo is send over WCF as a result of a call.
  • Secondly, Both FolderName and FolderPath are the same value until i get round to writing a regex to get the folder name out of the path.
Here we go:

private List<FolderInfo>loadfolder(FolderInfo folder){

            List<FolderInfo> result = new List<FolderInfo>();
            DirectoryInfo info = new DirectoryInfo(folder.FolderPath);
            foreach (DirectoryInfo thedir in info.GetDirectories()) // get directories N+1 levels down
            {
                FolderInfo temp = new FolderInfo();
                temp.FolderName = thedir.FullName;
                temp.FolderPath = thedir.FullName;
                temp.HasChildFolders = false;
                //return folders 2 levels down
                foreach (DirectoryInfo innerdir in thedir.GetDirectories())//get directories N+2 levels down
                {
                    FolderInfo innertemp = new FolderInfo();
                    innertemp.FolderName = innerdir.FullName;
                    innertemp.FolderPath = innerdir.FullName;
                    if (innerdir.GetDirectories().Length > 0)
                    {
                        innertemp.FoldersContained = loadfolder(innertemp);// get directories N+3 levels down ( or N+N levels)
                        temp.HasChildFolders = true;
                    }
                    else
                    {
                        innertemp.HasChildFolders = false;
                    }
                   
                    temp.FoldersContained.Add(innertemp);
                }
                result.Add(temp);
            }

            return result;
        }