public static List<double> RoadType(Trip trip, List<Fact> facts, DBController dbc) { SortedDictionary<Global.Enums.RoadType, double> metersDistribution = new SortedDictionary<Global.Enums.RoadType, double>(); List<Global.Enums.RoadType> roadTypes = dbc.GetRoadTypesByTripId(trip.TripId); //Populate dictionary with all policy-required roadtypes foreach (Global.Enums.RoadType roadType in DefaultPolicy.RoadTypes) { metersDistribution.Add(roadType, 0); } //Calculate meters driven on each roadtype for (int i = 1; i < facts.Count; i++) { if (DefaultPolicy.RoadTypes.Contains(roadTypes[i])) { metersDistribution[roadTypes[i]] += facts[i].Spatial.DistanceToLag; } } List<double> resultList = metersDistribution.Values.ToList(); //Calculate the distribution in percentages of whole trip for (int i = 0; i < resultList.Count; i++) { resultList[i] = (resultList[i] / trip.MetersDriven) * 100; } return resultList; }