public void CalculateForAll() { var sw = new Stopwatch(); sw.Start(); var movies = _movieConnection.GetAllMovies(); Parallel.ForEach(movies, movie => { var reviews = _reviewConnection.GetReviewsByMovieId(movie.Id).ToArray(); if (reviews.Any()) { var mean = ((float)(reviews.Sum(r => r.Note))) / reviews.Count(); var movieMean = new MovieMean { Title = movie.Title, Id = movie.Id, Mean = mean }; _meanConnection.Save(movieMean); if (MeanCalculated != null) { MeanCalculated(movieMean); } } }); sw.Stop(); Console.WriteLine("Calculated {0} means in {1}", movies.Count(), sw.Elapsed); }
public void Save(MovieMean mean) { Insert(mean); }