private List <VmIndustrialClassJsonItem> FillChildren(List <VmIndustrialClassJsonItem> list) { // Dictionary<string, VmFintoJsonItem> all = list.Select(x => new VmFintoJsonItem { Id = x.Code, Label = x.Name, Finnish = x.Name /* OntologyType = x.Level*/}).ToDictionary(x => x.Id); Dictionary <int, VmIndustrialClassJsonItem> parents = new Dictionary <int, VmIndustrialClassJsonItem> { { 1, null }, { 2, null }, { 3, null }, { 4, null }, { 5, null }, }; foreach (var item in list) { VmIndustrialClassJsonItem root = null; int parentLevel = item.Level - 1; parents[item.Level] = item; if (parentLevel > 0 && parentLevel < 5) { root = parents[parentLevel]; } if (root != null) { if (root.Children == null) { root.Children = new List <VmIndustrialClassJsonItem>(); } root.Children.Add(item); // parent.Parents.Count.Should() // .BeLessThan(2, $"{x} not in {parent.Parents.FirstOrDefault()}. Parent {item.Id}"); item.Parent = root.Code; } } return(list.Where(x => string.IsNullOrEmpty(x.Parent)).ToList()); }
public List <VmIndustrialClassJsonItem> BuildTree(List <VmIndustrialClassJsonItem> list) { Dictionary <int, VmIndustrialClassJsonItem> parents = new Dictionary <int, VmIndustrialClassJsonItem> { { 1, null }, { 2, null }, { 3, null }, { 4, null }, { 5, null }, }; foreach (var item in list) { VmIndustrialClassJsonItem root = null; int parentLevel = item.Level - 1; parents[item.Level] = item; if (parentLevel > 0 && parentLevel < 5) { root = parents[parentLevel]; } if (root != null) { if (root.Children == null) { root.Children = new List <VmIndustrialClassJsonItem>(); } root.Children.Add(item); // parent.Parents.Count.Should() // .BeLessThan(2, $"{x} not in {parent.Parents.FirstOrDefault()}. Parent {item.Id}"); item.Parent = root.Code; } } return(list.Where(x => string.IsNullOrEmpty(x.Parent)).ToList()); }