private static Dictionary <RaceResult, ComparativePerformanceResult> GetXYResults(List <RaceResult> raceResults, Dictionary <string, double> genderHistorgram) { var xyResults = new Dictionary <RaceResult, ComparativePerformanceResult>(); foreach (var raceResult in raceResults) { var tempsPartiel1 = RaceResult.ParseAsTimeSpan(raceResult.temps_partiel_1); var tempsPartiel2 = RaceResult.ParseAsTimeSpan(raceResult.temps_partiel_2); if (genderHistorgram.ContainsKey(raceResult.age) && tempsPartiel1.HasValue && tempsPartiel2.HasValue) { var totalTime = raceResult.GetTotalTimeAsTimeSpan(); var ageAverageTimeInMilliseconds = genderHistorgram[raceResult.age]; var ageAverageTime = TimeSpan.FromMilliseconds(ageAverageTimeInMilliseconds); var firstHalfVsTotalTimeSpeedRatio = tempsPartiel1.Value.TotalMilliseconds / totalTime.Value.TotalMilliseconds; var ageComparativePerformanceRatio = totalTime.Value.TotalMilliseconds / ageAverageTime.TotalMilliseconds; var xyResult = new ComparativePerformanceResult(ageComparativePerformanceRatio, firstHalfVsTotalTimeSpeedRatio); xyResults.Add(raceResult, xyResult); } } return(xyResults); }