Sadly there is no recursive support in LINQ AFAIK (I faced the same problem), but you at least can shorten it to:
var results = DbContext.Set<Folder>()
.Include(f => f.ParentFolder)
.Include(f => f.Files)
.Include(f => f.ChildFolders.Select(f1 => f1.ChildFolders).Select(f2 => f.ChildFolders.Select(f3 => f3.ChildFolders.Select(f4 => f4.ChildFolders.Select(f5 => f5.ChildFolders.Select(f6 => f6.Files))))))
.Where(f.ParentFolder == null);
All "lower levels" are also included if you select the "higher level".
I THINK this is because SQL also has no support for this...
If you are fine with executing this "in code" using multiple queries to the DB (or you not using a DB at all) see golergka's comment.