public IEnumerable <HierarchyLinks> BuildHeirarchyChildLinks(I___BaseTaxonomy taxItem) { var children = new List <HierarchyLinks>(); Dictionary <Guid, HierarchyLinks> taxonomyItems = new Dictionary <Guid, HierarchyLinks>(); foreach (var taxonomy in taxItem.Taxonomies) { var taxonomyTree = GetTaxonomyHierarchy(taxonomy); if (!taxonomyItems.ContainsKey(taxonomyTree.Item1._Id)) { taxonomyItems.Add(taxonomyTree.Item1._Id, new HierarchyLinks { Text = taxonomyTree.Item1._Name, Url = string.Empty, Children = new List <HierarchyLinks>() }); } var folderItem = taxonomyItems[taxonomyTree.Item1._Id]; foreach (var item in taxonomyTree.Item3) { if (!taxonomyItems.ContainsKey(item._Parent._Id)) { taxonomyItems.Add(item._Parent._Id, new HierarchyLinks { Text = item.Item_Name, Url = SearchTaxonomyUtil.GetSearchUrl(item), Children = new List <HierarchyLinks>() }); } var lItem = new HierarchyLinks { Text = item.Item_Name, Url = SearchTaxonomyUtil.GetSearchUrl(item), Children = new List <HierarchyLinks>() }; if (!taxonomyItems.ContainsKey(item._Id)) { taxonomyItems.Add(item._Id, lItem); } var parent = taxonomyItems[item._Parent._Id]; var pList = parent.Children.ToList(); if (!pList.Any(a => a.Text.Equals(lItem.Text))) { pList.Add(lItem); } parent.Children = pList; } if (!children.Any(x => x.Text.Equals(folderItem.Text))) { children.Add(folderItem); } } return(children); }
public IEnumerable <HierarchyLinks> GetHeirarchyChildLinks(I___BaseTaxonomy taxItem) { string cacheKey = CreateCacheKey($"HeirarchyChildLinks-{taxItem._Id}"); return(CacheProvider.GetFromCache(cacheKey, () => BuildHeirarchyChildLinks(taxItem))); }