private TreeComponent CreateTreeRecursively(SubTreeComponent root) { var subTreeList = db.TestGroup.Where(x => x.ParentId == root.Id) .OrderBy(x => x.TestGroupId).Select(x => new SubTreeComponent { Id = x.TestGroupId, Name = x.Name }).ToList(); List <TreeComponent> component = subTreeList.ConvertAll <TreeComponent>(x => x); root.AddRange(component); for (int i = 0; i < subTreeList.Count; i++) { var subTree = subTreeList[i];//root.GetChild(i) as SubTreeComponent; CreateTreeRecursively(subTree); } List <TreeItem> leafList = db.Test .Where(x => x.OwnerId == 1 && x.TestType == root.Id) .Select(x => new TreeItem { Id = x.TestId, Name = x.Name, Difficult = x.Difficult, GroupName = root.Name, Controller = "Test", Action = "Test" }) .ToList(); List <TreeComponent> leaf = leafList.ConvertAll <TreeComponent>(x => x); root.AddRange(leaf); return(root); }
// GET: Test public ActionResult Index() { string userIdentity = User.Identity.GetUserId(); var user = db.User.Where(x => x.IdentityId == userIdentity).First(); ViewBag.User = user; SubTreeComponent root = new SubTreeComponent(0, "Перегляд за групою"); root = CreateTreeRecursively(root) as SubTreeComponent; var url = new UrlHelper(System.Web.HttpContext.Current.Request.RequestContext); return(View((object)root.Print(user, url))); }