public List<NullableFact> AggregateFactsBySalesComponent(List<NullableFact> facts, List<Relation> salesComponentRelations) { var hierarchy = new Hierarchy(salesComponentRelations); var aggregator = new Aggregator(hierarchy); var results = new List<NullableFact>(); foreach (var parent in salesComponentRelations.Select(s => s.Parent).Distinct()) { results.AddRange(aggregator.Aggregate(facts, parent)); } facts.AddRange(results); return facts; }