static void Main(string[] args) { using (var db = new MovieContext()) { #region seeding if (db.Genres.Count() == 0) { Seed(db); } #endregion #region Novas consultas criadas MovieContext context = new MovieContext(); //Consulta 1 var ForrestGumpCast = from c in context.Characters where c.Movie.Title == "Forrest Gump" select c.Actor.Name; Console.WriteLine(" "); Console.WriteLine("Elenco de Forrest Gump: "); foreach (String actorName in ForrestGumpCast) { Console.WriteLine(actorName); } //Consulta 2 var ForrestGumpActors = (from c in context.Characters where c.Character == "Forrest Gump" select c.Actor.Name).Distinct(); Console.WriteLine(" "); Console.WriteLine("Atores que viveram Forrest Gump: "); foreach (String actorName in ForrestGumpActors) { Console.WriteLine(actorName); } //Consulta 3 var JamesBond = (from c in context.Characters where c.Character == "James Bond" group c by c.Actor.Name into ActorAsCharacter orderby ActorAsCharacter.Count() descending select ActorAsCharacter.Key).First(); Console.WriteLine(" "); Console.WriteLine("O ator que mais atuou como James Bond foi: "); Console.WriteLine(JamesBond); //Consultas opcionais: //Consulta 4 - Filmes tem o Gross entre 10 milhões e 50 milhões. Console.WriteLine("\nFilmes tem o Gross entre 10 milhões e 50 milhões"); var filmesGross = from f in context.Movies where (f.Gross >= 10000000 && f.Gross <= 50000000 ) select new { f.Title, f.Gross }; foreach (var filme in filmesGross) { Console.WriteLine(filme); } #endregion } }
static void Main(string[] args) { using (var db = new MovieContext()) { #region seeding if (db.Genres.Count() == 0) { Seed(db); } #endregion #region consultas MovieContext context = new MovieContext(); //Consulta 1 - Listar elenco de um filme. var StarWarsCast = from c in context.Characters where c.Movie.Title == "Star Wars" select c.Actor.Name; Console.WriteLine(" "); Console.WriteLine("Elenco de Star Wars: "); foreach (String actorName in StarWarsCast) { Console.WriteLine(actorName); } //Consulta 2 - Listar todos os atores que já desempenharam um determinado personagem. var jamesBondActors = (from c in context.Characters where c.Character == "James Bond" select c.Actor.Name).Distinct(); Console.WriteLine(" "); Console.WriteLine("Atores que viveram James Bond: "); foreach (String actorName in jamesBondActors) { Console.WriteLine(actorName); } //Consulta 3 - Informar qual o ator desempenhou mais vezes um determinado personagem. var mostActedAsJamesBond = (from c in context.Characters where c.Character == "James Bond" group c by c.Actor.Name into ActorAsCharacter orderby ActorAsCharacter.Count() descending select ActorAsCharacter.Key).First(); Console.WriteLine(" "); Console.WriteLine("O ator que mais atuou como James Bond foi: "); Console.WriteLine(mostActedAsJamesBond); //Consultas opcionais: //Consulta 4 - Filmes tem o rating maior que 8.4. Console.WriteLine("\nFilmes tem o rating maior que 8.4"); var filmesRating = from f in context.Movies where f.Rating > 8.40 select new { f.Title, f.Rating }; foreach (var filme in filmesRating) { Console.WriteLine(filme); } //Consulta 5 - Todos os diretores que estiveram em mais de um filme de ação. var actionDirector = from m in context.Movies where m.Genre.Name == "Action" select m.Director; Console.WriteLine(" "); Console.WriteLine("Todos os diretores que fizeram filmes de ação: "); foreach (var directorName in actionDirector) { Console.WriteLine(directorName); } Console.ReadKey(); #endregion #region consultasPadrao //Consultas padrões // filmes do diretor “Quentin Tarantino” //var query1 = from f in context.Movies // where f.Director == "Quentin Tarantino" // select f; //var query2 = from f in context.Movies // where f.Director == "Quentin Tarantino" // select f.Title; //var query3 = context.Movies // .Where(f => f.Director == "Quentin Tarantino") // .Select(f => f.Title); //Console.WriteLine("\nQuery 1"); //Console.WriteLine("Filmes do diretor Quentin Tarantino"); //foreach (String titulo in query2) //{ // Console.WriteLine(titulo); //} //Console.WriteLine("Query 2"); ////todos os filmes do genero "Action" //Console.WriteLine("\nFilmes de ação"); //var query4 = (from genero in context.Genres // .Include("Movies") // where genero.Name == "Action" // select genero).First(); //foreach (var filme in query4.Movies) //{ // Console.WriteLine("\t" + filme.Title); //} //mesma consulta, mas de maneira diferente. Estamos consultando a tabela filme por meio do context.Movies em que o nome do genero do filme é action e estamos mostrando o titulo do filme //var query4b = (from filme in context.Movies // where filme.Genre.Name == "Action" // select filme); //foreach (var filme in query4b) //{ // Console.WriteLine("\t" + filme.Title); //} //Console.WriteLine("Query 3"); //projeção sobre o título e dada de lançamento dos //filmes do diretor “Quentin Tarantino” //var query5 = from f in context.Movies // where f.Director == "Quentin Tarantino" // select new { Titulo = f.Title, f.ReleaseDate }; //foreach (var filme in query5) //{ // Console.WriteLine("{0}\t {1}", // filme.ReleaseDate.ToShortDateString(), // filme.Titulo); //} //Console.WriteLine("Query 4"); // Gêneros ordenados pelo nome //var query6 = from g in context.Genres // orderby g.Name descending // select g; //foreach (var genero in query6) //{ // Console.WriteLine("{0}\t {1}", genero.Name, genero.Description); //} //Console.WriteLine("Query 5"); //Filmes agrupados pelo ano de lançamento //var query7a = context.Movies.ToList(); //var query7 = from f in query7a // group f by f.ReleaseDate.Year; //foreach (var ano in query7) //{ // Console.WriteLine("Ano: {0}", ano.Key); // foreach (var filme in ano) // { // Console.WriteLine("\t{0:dd/MM}\t {1}", // filme.ReleaseDate, // filme.Title); // } //} //Console.WriteLine("Query 6"); //Projeção do faturamento total, quantidade de filmes //e avaliação média agrupadas por gênero //var query8a = context.Movies.ToList(); //var query8 = from f in query8a // group f by f.Genre.Name into grpGen // select new // { // Categoria = grpGen.Key, // Filmes = grpGen, // Faturamento = grpGen.Sum(e => e.Gross), // Avaliacao = grpGen.Average(e => e.Rating), // Quantidade = grpGen.Count() // }; //foreach (var genero in query8) //{ // Console.WriteLine("\nGenero: {0}", genero.Categoria); // Console.WriteLine("\tFaturamento total: {0}\n\t Avaliação média: {1}\n\tNumero de filmes: {2}", // genero.Faturamento, genero.Avaliacao, genero.Quantidade); // Console.WriteLine("Filmes: "); // foreach (var m in genero.Filmes) // { // Console.WriteLine("\t{0}", m.Title); // } //} //Console.ReadKey(); #endregion } }