public static TagCountViewModel TagsAndCount(int movieID) { MovieDbContext db = new MovieDbContext(); TagCountViewModel tagView = new TagCountViewModel(){ TagAndCount = new Dictionary<string, int>()}; //find the ids of the tags related to the movie var tagsForMovie = from MtT in db.UserToMovieToTags where MtT.movie_ID == movieID select MtT.TagId; //find the tag string based on the id of the strings var tagStrings = from tag in db.MovieTags from tag_id in tagsForMovie where tag.TagId == tag_id select tag.Name; var tagCounts = from tagString in db.MovieTags where tagStrings.Contains(tagString.Name) from MtT in db.UserToMovieToTags where MtT.TagId == tagString.TagId group MtT.TagId by tagString.Name into grouping select grouping; foreach (IGrouping<string, int> result in tagCounts) { tagView.TagAndCount.Add(result.Key, result.Count()); } return tagView; }
private TagCountViewModel TagsAndCounts() { MovieDbContext db = new MovieDbContext(); TagCountViewModel tagView = new TagCountViewModel() { TagAndCount = new Dictionary<string, int>() }; //find the ids of the tags related to the movie //var tagsForMovie = from MtT in db.UserToMovieToTags // where MtT.movie_ID == movieID // select MtT.TagId; //find the tag string based on the id of the strings var tagStrings = from tag in db.MovieTags //from tag_id in tagsForMovie //where tag.TagId == tag_id select tag.Name; var tagCounts = from tagString in db.MovieTags where tagStrings.Contains(tagString.Name) from MtT in db.UserToMovieToTags where MtT.TagId == tagString.TagId group MtT.TagId by tagString.Name into grouping select grouping; foreach (IGrouping<string, int> result in tagCounts) { tagView.TagAndCount.Add(result.Key, result.Count()); } return tagView; /* var allTags = (from tagName in db.MovieTags from tagID in db.UserToMovieToTags where tagName.TagId == tagID.TagId group tagID.TagId by tagName.Name into grouping select grouping).ToDictionary(grp => grp.Key, grp => grp.Key.Count()); return allTags; */ }