Advertisement
TankorSmash

Untitled

Jan 11th, 2013
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.72 KB | None | 0 0
  1.         //loop over all the movies in Movies and find an omdb entry for it
  2.         public ActionResult Merge()
  3.         {
  4.  
  5.             MovieDbContext db = new MovieDbContext();
  6.  
  7.             //get list of movies
  8.             var movie_queryable = db.Movies.AsQueryable();
  9.  
  10.             //TODO: match better, curr. only finds 12k movies but there should be closer to 56k
  11.             //find matching omdb entry that shares year and title
  12.             //var movie_titles = movie_queryable.Select(movie => movie.short_title);
  13.             //var movie_years = movie_queryable.Select(movie => movie.year);
  14.             //var both_omdb_qry =
  15.             //    db.Omdb.Where(omdb => movie_titles.Contains(omdb.title) && movie_years.Contains(omdb.year));
  16.             //    //db.Omdb.Where(omdb => movie_titles.Contains(omdb.title))
  17.             //    //  .Where(omdb => movie_years.Contains(omdb.year));
  18.             //var year_omdb_qry =
  19.             //    db.Omdb .Where(omdb => movie_years.Contains(omdb.year));
  20.  
  21.  
  22.             //Tools.TraceLine("title + year movies found {0}", both_omdb_qry.Count());
  23.             //Tools.TraceLine("year movies found {0}", year_omdb_qry.Count());
  24.             //Tools.TraceLine("title movies found {0}", title_omdb_qry.Count());
  25.  
  26.             //movie_queryable.ToList();
  27.             //both_omdb_qry.ToList();
  28.             //year_omdb_qry.ToList();
  29.             //title_omdb_qry.ToList();
  30.             //unrelated, test modifying an entry to db
  31.             //Movie warlock =
  32.             //    movie_queryable.First( movie => movie.movie_ID == 1);
  33.             //warlock.short_title = "Warlock";
  34.             //db.Entry(warlock).State = EntityState.Modified;
  35.             //db.SaveChanges();
  36.  
  37.  
  38.  
  39.             //take only movies, since OMDB doesn't hold tv shows
  40.             var movie_list = db.Movies.ToList().Where(movie => movie.is_movie);
  41.             var omdb_list = db.Omdb.ToList();
  42.             Dictionary<Movie, OmdbEntry> matches_MtO =
  43.                 new Dictionary<Movie, OmdbEntry>();
  44.  
  45.  
  46.  
  47.             //titles from both sources
  48.             var movie_titles_ids =
  49.                 movie_list.Select(
  50.                     movie => new {movie.short_title, movie.movie_ID}).ToList();
  51.             var movie_ids = movie_list.Select(movie => movie.movie_ID);
  52.             var omdb_titles = omdb_list.Select(omdb => omdb.title);
  53.  
  54.  
  55.             //pseudo code for what I want
  56.             //where omdb.title == movie.short_title && omdb.year == movie.year select new {omdb_id, movie_id}
  57.  
  58.             //var ombdID_movieIDs =
  59.             //    db.Omdb.Select(
  60.             //        omdb =>
  61.             //        new MovieToGenre()
  62.             //            {
  63.             //                movie_ID = omdb.ombd_ID,
  64.             //                genre_ID=movie_titles_ids.Where(
  65.             //                    movie => movie.short_title == omdb.title)
  66.             //                                .Select(item => item.movie_ID)
  67.             //                                .First()
  68.             //            });
  69.  
  70.             //ombdID_movieIDs.ToList(); var res =
  71.             //    ombdID_movieIDs.Select(
  72.             //        //pair => new int[] { pair[0], pair[1] });
  73.             //        //pair => new int[] { pair.movie_ID, pair.ombd_ID });
  74.             //        pair => new int[] { pair.movie_ID, pair.genre_ID });
  75.  
  76.             //foreach (var ombdIdMovieID in ombdID_movieIDs) {
  77.             //int count = 0;
  78.             //foreach (Movie movie in movie_list)
  79.             //{
  80.             //    var omdb =
  81.             //        omdb_list.FirstOrDefault(
  82.             //            om => (movie.short_title == om.title && movie.year == om.year));
  83.             //    matches_MtO[movie] = omdb;
  84.  
  85.             //    Tools.TraceLine("count {0}", count);
  86.             //    if (omdb != null)
  87.             //    {
  88.             //        Tools.TraceLine("Omdb {0}, Movie {1}", omdb.title,
  89.             //                        movie.short_title);
  90.             //    }
  91.             //    else { Tools.TraceLine("Movie {0}, had no match", movie.short_title);}
  92.             //    count++;
  93.  
  94. //          var matches = (
  95. //    from f in movie_list
  96. //    join b in omdb_list on
  97. //     f.year equals b.year  and
  98. //    f.short_title equals b.title
  99. //    select new {f, b}
  100. //);
  101. //var matches = (
  102. //    from f in movie_list
  103. //    join b in omdb_list
  104. //    on f.year equals b.year
  105. //    && equals b.name
  106. //    select new {f, b}
  107. //);
  108.  
  109.             var query = from fm in db.Movies
  110.             join bm in db.Omdb on
  111.               new { name = fm.short_title, year = fm.year } equals new { name = bm.title, year = bm.year }
  112.             select new {
  113.                FamilyMan = fm,
  114.                BusinessMan = bm
  115.             };
  116.  
  117. var resultList = query.ToList();
  118. //var query = from fm in db.Movies
  119. //            join bm in db.Omdb on
  120. //                bm.title equals fm.short_title and bm.year equals fm.year
  121. //            select new {
  122. //               Movie = fm,
  123. //               OmdbEntry = bm
  124. //            };
  125.  
  126. //var resultList = query.ToList();
  127.  
  128.             //}
  129.  
  130.                 //Tools.TraceLine("Omdb {0}, Movie {1}", ombdIdMovieID.ombd_ID,
  131.                 //                ombdIdMovieID.movie_ID);
  132.                 //Tools.TraceLine("Omdb {0}, Movie {1}", ombdIdMovieID[0],
  133.                 //                ombdIdMovieID[1]);
  134.                 //Tools.TraceLine("Omdb {0}, Movie {1}", ombdIdMovieID.genre_ID,
  135.                 //                ombdIdMovieID.movie_ID);
  136.             //}
  137.  
  138.                
  139.                 //omdb => movie_titles_ids.Select(item => item.short_title).Contains(omdb.title)).Select(omdb => new { omdb.title, item });
  140.  
  141.  
  142.             //titles in movies that are also in omdb
  143.             //var matched_title =
  144.             //    movie_titles.Where(
  145.             //        movie_title => omdb_titles.Contains(movie_title));
  146.             ////titles in ombd that are also in omdb
  147.             //var title_omdb_qry =
  148.             //    db.Omdb.Where(omdb => movie_titles.Contains(omdb.title)).Select(omdb => omdb.title);
  149.  
  150.             //var title_id =
  151.             //    db.Omdb.SelectMany(omdb => omdb, (OmdbEntry, Movie) => new {OmdbEntry, Movie} );
  152.  
  153.             //int count = 0;
  154.             //foreach (Movie movie in movie_list) {
  155.             //    Movie movie1 = movie;
  156.             //    foreach ( OmdbEntry omdb in omdb_list.Where( omdb => movie1.short_title == omdb.title && movie1.year == omdb.year)) {
  157.             //        matches_MtO[movie] = omdb;
  158.             //        Tools.TraceLine("matched {0}", count);
  159.             //        count++;
  160.             //        break;
  161.             //    }
  162.             //}
  163.  
  164.             //loop over all the omdb entries and find the movie_ids for them
  165.  
  166.             return View();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement