Example #1
0
        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();
        }