private static int AssertWeight(RootObjectFull root) { var counts = new List <int>(); foreach (var sub in root.SubPrograms) { counts.Add(CountWeight(sub)); } try { var key = counts.GroupBy(r => r).Where(r => r.Count() == 1).First().Key; var result = AssertWeight(root.SubPrograms.First(r => CountWeight(r) == key)); if (result == 0) { var diff = counts.First(i => i != key) - key; return(key += diff); } else { return(result); } } catch { return(0); } }
private static int CountWeight(RootObjectFull root) { var result = 0; result += root.Weight; if (root.SubPrograms != null) { foreach (var sub in root.SubPrograms) { //result += sub.Weight; result += CountWeight(sub); } } return(result); }
private static RootObjectFull Populate(RootObject root) { var full = new RootObjectFull(); full.Name = root.Name; full.Weight = root.Weight; full.SubPrograms = new List <RootObjectFull>(); if (root.SubPrograms != null) { foreach (var sub in root.SubPrograms) { var entry = list.First(r => r.Name.Equals(sub)); full.SubPrograms.Add(Populate(entry)); } } return(full); }