private static IEnumerable<PageTreeItem> GetPageTreeChildrenRecursive(this IPage page, IContentService contentService, int depth, int level = 1) { return contentService.GetChildren(page).Select(p => new PageTreeItem { Id = p.Id, IsStartPage = p.Id == contentService.StartPage.Id, Name = p.Name, ParentId = p.ParentId, HasChildren = contentService.GetPageInfo(pi => pi.ParentId == p.Id).Count() > 0, Children = level < depth ? p.GetPageTreeChildrenRecursive(contentService, depth, level + 1) : Enumerable.Empty<PageTreeItem>() }); }