static void Main(string[] args) { var filmes = GetFilmes(); var diretores = GetDiretores(); var novoFilme = new Filme { Titulo = "A Fantástica Fábrica de Chocolate", Ano = 2005, Diretor = new Diretor { Id = 3, Nome = "Tim Burton" }, DiretorId = 3, Minutos = 115 }; filmes.Add(novoFilme); Imprimir(filmes); //LINQ = CONSULTA INTEGRADA À LINGUAGEM //SELECT f.* //FROM filmes AS f //ALIAS //WHERE f.Diretor = "Tim Burton" var consulta = from f in filmes where f.Diretor.Nome == "Tim Burton" select f; Imprimir(consulta); //SELECT f.Nome AS Titulo, f.Diretor //FROM filmes AS f //ALIAS //WHERE f.Diretor = "Tim Burton" var consulta2 = from f in filmes where f.Diretor.Nome == "Tim Burton" select new FilmeResumido { Titulo = f.Titulo, Diretor = f.Diretor.Nome }; Imprimir(consulta2); var consulta3 = from f in filmes where f.Diretor.Nome == "Tim Burton" select new //OBJETO ANÔNIMO { f.Titulo, Diretor = f.Diretor.Nome }; Console.WriteLine($"{"Título",-40} {"Diretor",-20}"); Console.WriteLine(new string('=', 64)); foreach (var filme in consulta3) { Console.WriteLine($"{filme.Titulo,-40} {filme.Diretor,-20}"); } Console.WriteLine(); //SELECT f.Nome AS Titulo, d.Nome AS Diretor //FROM filmes AS f //ALIAS //INNER JOIN diretores AS d // ON d.Id = f.DiretorId //WHERE d.Nome = "Tim Burton" var consulta4 = from f in filmes join d in diretores on f.DiretorId equals d.Id where f.Diretor.Nome == "Tim Burton" select new //OBJETO ANÔNIMO { f.Titulo, Diretor = d.Nome }; Console.WriteLine($"{"Título",-40} {"Diretor",-20}"); Console.WriteLine(new string('=', 64)); foreach (var filme in consulta4) { Console.WriteLine($"{filme.Titulo,-40} {filme.Diretor,-20}"); } Console.WriteLine(); //SELECT d.Nome AS Diretor, COUNT(*) AS Quantidade //FROM filmes AS f //ALIAS //INNER JOIN diretores AS d // ON d.Id = f.DiretorId //GROUP BY d.Id var consulta5 = from f in filmes join d in diretores on f.DiretorId equals d.Id group f by d into agrupado select new //OBJETO ANÔNIMO { Diretor = agrupado.Key, Quantidade = agrupado.Count(), Total = agrupado.Sum(f => f.Minutos), Min = agrupado.Min(f => f.Minutos), Max = agrupado.Max(f => f.Minutos), Media = (int)agrupado.Average(f => f.Minutos) }; Console.WriteLine( $"{"Nome",-30}" + $"\t{"Qtd"}" + $"\t{"Total"}" + $"\t{"Min"}" + $"\t{"Max"}" + $"\t{"Media"}"); foreach (var item in consulta5) { Console.WriteLine( $"{item.Diretor.Nome,-30}" + $"\t{item.Quantidade}" + $"\t{item.Total}" + $"\t{item.Min}" + $"\t{item.Max}" + $"\t{item.Media}"); } int tamanhoPagina = 4; int pagina = 0; while (pagina * tamanhoPagina < filmes.Count()) { Console.WriteLine(); Console.WriteLine("Página: " + (pagina + 1)); Console.WriteLine(); var relatorio = from f in filmes .Skip(pagina * tamanhoPagina) .Take(tamanhoPagina) select f; Imprimir(relatorio); pagina++; } Console.ReadKey(); }
static void Main(string[] args) { List <Diretor> diretores = GetDiretores(); List <Filme> filmes = GetFilmes(); //Console.WriteLine($"{"Título",-40}{"Diretor",-20}{"Ano",4}"); //Console.WriteLine(new string('=', 64)); //foreach (var filme in filmes) //{ // Console.WriteLine($"{filme.Titulo, -40}{filme.Diretor.Nome, -20}{filme.Ano}"); //} Imprimir(filmes); Filme novoFilme = new Filme { DiretorId = 3, Diretor = new Diretor { Id = 3, Nome = "Tim Burton" }, Titulo = "A Fantástica Fábrica de Chocolate", Ano = 2005, Minutos = 115 }; filmes.Add(novoFilme); //IEnumerable<Filme> filmesSelecionados = filmes; //Imprimir(filmesSelecionados); //IEnumerable<Filme> filmesSelecionados // = from f in filmes select f; //Imprimir(filmesSelecionados); IEnumerable <Filme> filmesSelecionados = from filme in filmes where filme.Diretor.Nome == "Tim Burton" select filme; Imprimir(filmesSelecionados); //string nome = "Steven Spielberg"; //int ano = 1984; //int teste = ano - nome; var selecionados = from filme in filmes where filme.Diretor.Nome == "Tim Burton" select filme; Imprimir(filmesSelecionados); var selecionados2 = from filme in filmes where filme.Diretor.Nome == "Tim Burton" select new FilmeResumido { NomeDiretor = filme.Diretor.Nome, Titulo = filme.Titulo }; Imprimir(selecionados2); Console.ReadKey(); }