public static Dictionary <int, SmElasticityHierarchy> Build(IEnumerable <ElasticityHierarchy> entities) { if (entities == null) { return(null); } var result = entities .GroupBy(x => new { x.HierarchyId, x.ParentHierarchyId, x.HierarchyName, Path = x.HierarchyPath }) .Select(x => new SmElasticityHierarchy { MaxStage = x.Max(y => y.Stage), HierarchyId = x.Key.HierarchyId, HierarchyName = x.Key.HierarchyName, ParentHierarchyId = x.Key.ParentHierarchyId, Path = x.Key.Path, Elasticities = x.ToDictionary(y => y.Stage, SmElasticity.Build) }) .ToDictionary(x => x.HierarchyId); foreach (var item in result.Values) { SmElasticityHierarchy 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) }); }