public List <Movie> RecommendedMovies(int userId) { var consumerList = _context.UsersMovies.Where(um => um.UserId == userId).Include(um => um.Movie).ToList(); List <Model.Movie> usersMovies = new List <Movie>(); foreach (var movie in consumerList) { usersMovies.Add(_mapper.Map <Model.Movie>(movie.Movie)); } var allMovies = _mapper.Map <List <Model.Movie> >(_context.Movies.ToList()); foreach (var item in usersMovies) { allMovies.RemoveAll(m => m.MovieId == item.MovieId); } List <ItemScore <Model.Movie> > allMoviesWithScore = new List <ItemScore <Movie> >(); foreach (var movie in allMovies) { ItemScore <Model.Movie> newItem = new ItemScore <Movie>() { Item = movie, Score = 0 }; allMoviesWithScore.Add(newItem); } foreach (var movie in allMoviesWithScore) { foreach (var usersMovie in usersMovies) { movie.Score += _similarity.CalculateSimilarity(_wordBagGenerator.GenerateWordBag <Model.Movie>(movie.Item), _wordBagGenerator.GenerateWordBag <Model.Movie>(usersMovie)); } } allMoviesWithScore.Sort((a, b) => b.Score.CompareTo(a.Score)); List <Model.Movie> recommendedMovies = new List <Movie>(); foreach (var movie in allMoviesWithScore) { recommendedMovies.Add(movie.Item); } return(recommendedMovies); }