private ConfigurationRunPropertiesProcessed CalculateConfigurationProperties(IEnumerable <ConfigurationRunProperties> runs) { double durationBest = double.MaxValue, durationWorst = 0, duration = 0, ineffBest = double.MaxValue, ineffWorst = 0, ineff = 0; foreach (var run in runs) { var currentDuration = run.Duration; CalculateDurations(currentDuration, ref durationBest, ref durationWorst, ref duration); var currentIneff = run.InefficiencyTime; CalculateInefficiency(currentIneff, ref ineffBest, ref ineffWorst, ref ineff); } var count = runs.Count(); return(new ConfigurationRunPropertiesProcessed { Id = 0, Configuration = new Configuration { Id = runs.First().Configuration.Id, Name = runs.First().Configuration.Name }, Duration = duration / count, DurationBest = durationBest, DurationWorst = durationWorst, InefficiencyTime = ineff / count, InefficiencyTimeBest = ineffBest, InefficiencyTimeWorst = ineffWorst, Cost = runs.First().Cost, Procedures = _proceduresService.Combine(runs.Select(x => x.Procedures)), Resources = _resourcesService.Combine(runs.Select(x => x.Resources)) }); }