コード例 #1
0
        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));
        }
コード例 #2
0
ファイル: DictionaryBLL.cs プロジェクト: dylanpeng/NewMVCDemo
        /// <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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }