public async Task <IEnumerable <CarStatistic> > GetCarStatisticsInPreviousDays(int days) { var travelPlans = _travelPlanService.GetTravelPlansInDateRange(days); var travelPlansGroupedByCar = travelPlans.ToList() .GroupBy(tp => new { tp.CarId, tp.Car }, (g, tp) => new { g.Car.CarId, g.Car, Trips = tp.Select(x => new { x.TravelPlanId, StartLocation = x.StartLocation.Name, EndLcoation = x.EndLocation.Name, StartDate = x.StartTimeUtc, EndDate = x.EndTimeUtc, Employees = x.TravelPlanEmployees.Select(tpe => tpe.Employee) }) }).ToList(); var carStatistics = new List <CarStatistic>(); foreach (var car in travelPlansGroupedByCar) { var carStatistic = new CarStatistic() { Car = car.Car.Adapt <CarDto>(), }; var travelPlanStatistics = car.Trips.Select(t => new TravelPlanStatistic() { TravelPlanId = t.TravelPlanId, Employees = MapEmployee(t.Employees), StartLocation = t.StartLocation, EndLocation = t.EndLcoation, StartTimeUtc = t.StartDate, EndTimeUtc = t.EndDate }); carStatistic.TravelPlanStatistics.AddRange(travelPlanStatistics); carStatistics.Add(carStatistic); } return(carStatistics); }