public ActionResult Index() { var listView = new List<VehiclesViewModel>(); var listVehicles = new List<Vehicle>(); // Convert joined db graph to a typed Vehicle list var dbVehicles = (from v in db.Vehicles join m in db.Makes on v.Make.ID equals m.ID select new { m.Name, v.MPG }).ToList(); foreach (var v in dbVehicles) { var vehicle = new Vehicle() { Make = new Make() { Name = v.Name }, MPG = v.MPG }; listVehicles.Add(vehicle); } var makes = db.Makes.ToList(); var masterList = new List<List<Vehicle>>(); // Arrange Vehicles by Make foreach (var m in makes) { var newList = new List<Vehicle>(); foreach (var v in listVehicles) { if (v.Make.Name == m.Name) newList.Add(v); } masterList.Add(newList); } // Perform necessary operations and bind to the ViewModel foreach (var vehicleList in masterList) { if (vehicleList.Count != 0) { var vm = new VehiclesViewModel() { Make = vehicleList.Select(c => c.Make.Name).FirstOrDefault(), AvgMPG = (from v in vehicleList select v.MPG).Average(), MaxMPG = (from v in vehicleList select v.MPG).Max(), MinMPG = (from v in vehicleList select v.MPG).Min() }; listView.Add(vm); } } return View(listView); }
public ActionResult Add(HomeViewModel model) { if (model == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var userGraph = db.Users.Where(u => u.Email == User.Identity.Name).FirstOrDefault(); if (userGraph != null) { var vehicleMake = db.Makes.Where(v => v.ID == model.SelectedVehicle).FirstOrDefault(); var newVehicle = new Vehicle() { Make = vehicleMake, MPG = model.SelectedVehicleMPG }; userGraph.Vehicles.Add(newVehicle); db.SaveChanges(); } return RedirectToAction("Index"); }