public IActionResult GetMoviesByDirector(string name) { List <DictionaryVM> vmList = new List <DictionaryVM>(); string[] directors = name.Split(','); string id = User.FindFirst(ClaimTypes.NameIdentifier).Value; List <UserMovie> watchedMovies = _context.UserMovie.Where(x => x.UserId == id).ToList(); foreach (string director in directors) { List <MovieDirector> directorWorks = _context.MovieDirector.Where(m => director.Contains(m.Director)).ToList(); List <UserMovie> directorMovies = new List <UserMovie>(); for (int i = 0; i < directorWorks.Count; i++) { List <UserMovie> addMovies = _context.UserMovie.Where(m => m.MovieId == directorWorks[i].Imdbid).ToList(); directorMovies.Add(addMovies[0]); } List <UserMovie> recommendedMovies = directorMovies.Except(watchedMovies).ToList(); recommendedMovies.Select(x => x.MovieId).Distinct(); Dictionary <UserMovie, double> moviesWithAvgRating = new Dictionary <UserMovie, double>(); for (int dm = 0; dm < recommendedMovies.Count(); dm++) { double averageRating = GetAverageRating(recommendedMovies[dm]); moviesWithAvgRating.Add(recommendedMovies[dm], averageRating); } List <MovieDirector> directorlist = directorWorks.Distinct().ToList(); Dictionary <UserMovie, double> directorMovieByHighest = moviesWithAvgRating.OrderByDescending(x => x.Value).ToDictionary(x => x.Key, x => x.Value); DictionaryVM dictionaries = new DictionaryVM(); dictionaries.Actor = director; dictionaries.MoviesWithScore = directorMovieByHighest; vmList.Add(dictionaries); } return(View(vmList)); }
/// <summary> /// 根据类型查询字典 /// </summary> /// <param name="type"></param> /// <returns></returns> public static List <DictionaryVM> GetDictionaryByType(string type) { List <DictionaryVM> Dvms = new List <DictionaryVM>(); List <Dictionary> dictionary = DictionaryDAL.GetDictionaryByType(type); if (dictionary != null && dictionary.Count > 0) { foreach (var item in dictionary) { Mapper.CreateMap <Dictionary, DictionaryVM>(); DictionaryVM Dvm = Mapper.Map <Dictionary, DictionaryVM>(item); Dvms.Add(Dvm); } } return(Dvms); }
public PartialViewResult _Dictionary() { var vm = new DictionaryVM() { Categories = DataRepo.AllCategories.Select(x => new DictionaryCategoryItemVM() { Uid = x.Uid, Display = x.Display, Articles = x.Articles.Select(y => new DictionaryArticleItemVM() { Uid = y.Uid, Display = y.Display, Description = y.Description }).ToArray() }) .ToArray() }; return(PartialView("~/Views/Articles/Partials/Dictionary.cshtml", vm)); }
public IActionResult GetMoviesByActor(string name) { List <DictionaryVM> vmList = new List <DictionaryVM>(); string[] actors = name.Split(','); string id = User.FindFirst(ClaimTypes.NameIdentifier).Value; List <UserMovie> watchedMovies = _context.UserMovie.Where(x => x.UserId == id).ToList(); foreach (string actor in actors) { List <MovieActor> actorWorks = _context.MovieActor.Where(m => actor.Contains(m.Actor)).ToList(); //makes sure the instances of actors match the actor we are checking for List <UserMovie> actorMovies = new List <UserMovie>(); for (int i = 0; i < actorWorks.Count; i++) //goes through all the instances of an actor and adds those movies to a list { List <UserMovie> addMovies = _context.UserMovie.Where(m => m.MovieId == actorWorks[i].Imdbid).ToList(); actorMovies.Add(addMovies[0]); } List <UserMovie> recommendedMovies = actorMovies.Except(watchedMovies).ToList(); recommendedMovies.Select(x => x.MovieId).Distinct(); Dictionary <UserMovie, double> moviesWithAvgRating = new Dictionary <UserMovie, double>(); for (int am = 0; am < recommendedMovies.Count(); am++) //goes through every movie in recommendedMovies and finds the average user rating { // and adds that movie and score to a dictionary double averageRating = GetAverageRating(recommendedMovies[am]); moviesWithAvgRating.Add(recommendedMovies[am], averageRating); } // List<MovieActor> distinctActors = actorWorks.Distinct().ToList(); Dictionary <UserMovie, double> actorMoviesByHighest = moviesWithAvgRating.OrderByDescending(x => x.Value).ToDictionary(x => x.Key, x => x.Value); DictionaryVM dictionaries = new DictionaryVM(); dictionaries.Actor = actor; dictionaries.MoviesWithScore = actorMoviesByHighest; vmList.Add(dictionaries); } return(View(vmList)); }