示例#1
0
        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);
        }
示例#2
0
 public static SmModelData Build(List <ElasticityHierarchy> elasticity, List <DecayHierarchy> decay)
 {
     return(new SmModelData
     {
         DecayHierarchies = SmDecayHierarchy.Build(decay),
         ElasticityHierarchies = SmElasticityHierarchy.Build(elasticity)
     });
 }