public static Dictionary <int, SmDecayHierarchy> Build(IEnumerable <DecayHierarchy> entities) { if (entities == null) { return(null); } var result = entities .GroupBy(x => new { x.HierarchyId, x.ParentHierarchyId, x.HierarchyName, Path = x.HierarchyPath }) .Select(x => new SmDecayHierarchy { MaxStage = x.Max(y => y.Stage), HierarchyId = x.Key.HierarchyId, HierarchyName = x.Key.HierarchyName, ParentHierarchyId = x.Key.ParentHierarchyId, Path = x.Key.Path, Decays = x.ToDictionary(y => Tuple.Create(y.Stage, y.StageOffset), SmDecay.Build) }) .ToDictionary(x => x.HierarchyId); foreach (var item in result.Values) { SmDecayHierarchy parent = null; if (item.ParentHierarchyId != null) { result.TryGetValue((int)item.ParentHierarchyId, out parent); } item.Parent = parent; } return(result); }
public static SmModelData Build(List <ElasticityHierarchy> elasticity, List <DecayHierarchy> decay) { return(new SmModelData { DecayHierarchies = SmDecayHierarchy.Build(decay), ElasticityHierarchies = SmElasticityHierarchy.Build(elasticity) }); }