Ejemplo n.º 1
0
        private static void LinqContains()
        {
            var produtos = new Produto()
                           .ListarProdutos();

            produtos = produtos
                       .Where(x => x.Nome.Contains("a") || x.Nome.Contains("M"))
                       .ToList();

            produtos.ForEach(item =>
            {
                Console.WriteLine(JsonConvert.SerializeObject(item));
                Console.WriteLine(" ");
            });

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            var Produto  = new Produto();    /*instanciando uma classe*/
            var Produtos = Produto.Listar(); /* Usando um método, e botando o resultado em uma variavel*/

            /*Comentarios: botar comentario: CTRL + K, Ctrl + C remover: CTRL + K, Ctrl + U*/
            /*NewTonSoft.Json instalado para exibir Json*/

            #region Turotial-3


            /*Pode filtrar direito com Where*/
            var Produto2  = new Produto();                                  /*instanciando uma classe*/
            var Produtos2 = Produto2.Listar().Where(p => p.Quantidade > 4); /*R: Banana e Melão!*/


            /*Retorna somente os nomes de cada item!*/
            foreach (Produto item in Produtos)
            {
                Console.WriteLine(item.Nome);
            }


            /*Forech em uma unica linha!*/
            Console.WriteLine("\n Usando uma linha: ");

            new Produto().Listar().ForEach(item => Console.WriteLine(item.Nome)); /*R: todos os filtros*/



            /*Forech exibindo mais valores, filtrados e convertendo para lista!*/
            Console.WriteLine("\n Usando uma linha com filtro: ");

            new Produto().Listar().Where(item => item.Valor > 5).ToList().ForEach(item =>
            {
                Console.WriteLine(item.Nome);
                Console.WriteLine(item.Valor); /*R: Morango25, Pera12*/
            });


            #endregion


            #region Tutorial-4

            var ProdutosTutorial4 = new Produto().Listar(); /*Instnacia*/

            /* StratsWith: indica um valor que inicia com o caracter informado no parametro */
            /* EndsWith: indica um valor que finaliza com o caracter informado no parametro */
            Console.WriteLine("\n Json: \n");

            ProdutosTutorial4 = ProdutosTutorial4.Where(p => p.Nome.StartsWith("A") || p.Nome.EndsWith("o")).ToList();

            ProdutosTutorial4.ForEach(item =>
            {
                Console.WriteLine(JsonConvert.SerializeObject(item)); /*R: Morango, Abacaxi e Melão*/
                Console.WriteLine(" ");
            });

            /* Objeto Anônimo pelo .Select */
            Console.WriteLine("\n Criando Objeto Anônimo: \n");

            var ProdutoT4      = new Produto().Listar();
            var ProdutosString = ProdutoT4
                                 .Where(p => p.Nome.StartsWith("A") || p.Nome.EndsWith("o"))
                                 .Select(p => new
            {
                Nome  = p.Nome,
                Valor = p.Valor
            }
                                         )
                                 .ToList();

            ProdutosString.ForEach(p => Console.WriteLine(p)); /*R: Morango, Abacaxi e Melão*/


            /* Objeto Tipado pelo .Select() */
            /* Exemplo do .SubString(0,4): exibe somente os caracter do index 1° até o 4°*/
            /* Exemplo do .Insert(4, "texto"): inseri o texto depois do 4°index*/
            /* Exemplo do .Remove(IndexInicial, IndexFinal): remove de acordo com o index informado*/
            /* Exemplo do .Replace("a", "Z") : subistitui tudo que tem "a" por "Z" */
            Console.WriteLine("\n Criando Objeto Tipado, exemplo do .SubString() e .Insert() : \n");

            var ProdutoT42        = new Produto().Listar();
            var ProdutoStringType = ProdutoT42
                                    .Where(p => p.Nome.StartsWith("A") || p.Nome.EndsWith("o"))
                                    .Select(p => new ItensSelecionados()
            {
                Nome  = p.Nome,
                Valor = p.Valor,
                Dia   = p.DataDeVencimento.Day
            }
                                            )
                                    .ToList();

            ProdutoStringType.ForEach(p => Console.WriteLine("Nome: " + p.Nome.Substring(0, 4).Insert(4, " -Abreviado") + "/ Valor: " + p.Valor + "/ Dia: " + p.Dia)); /*R: Morango, Abacaxi e Melão*/

            Console.WriteLine("\n .Remove() e .Replace(): \n");
            ProdutoStringType.ForEach(p => Console.WriteLine(p.Nome.Remove(0, 1).Replace("a", "#"), p.Valor));

            #endregion


            #region Tutorial-5

            var ProdutosT5 = new Produto().Listar();

            /* FirstOrDefault(): Primeiro elemento da lista*/
            Console.WriteLine("\n Primeiro elemento da lista \n");
            var primeiroE = ProdutosT5.FirstOrDefault(); /* Não usar o "First(), porque ele retorna uma exeção!"*/
            Console.WriteLine(JsonConvert.SerializeObject(primeiroE));


            /* LastOrDefault(): Ultimo elemento da lista*/
            Console.WriteLine("\n Ultimo elemento da lista \n");
            var ultimoE = ProdutosT5.LastOrDefault();/* Não usar o "Last(), porque ele retorna uma exeção!"*/
            Console.WriteLine(JsonConvert.SerializeObject(ultimoE));


            /* Any(): Informa se acoleção/lista tem elementos, retorna true ou false*/
            if (ProdutosT5.Any())
            {
                Console.WriteLine("\n Existe objetos na lista: retornou TRUE! \n ");
            }

            /* Any(): Retorna true e false, baseando em uma condição com elementos da coleção/lista!  */
            if (ProdutosT5.Any(p => p.Quantidade > 5)) /* Any() pode ser usado dentro do Where*/
            {
                Console.WriteLine("\n Existe produtos com a quantidade maior que 5? : Retornou TRUE! \n");
            }


            /* .AddRange() : adiciona uma lista em outra lista!  */
            Console.WriteLine("\n Adicionando uma lista na outra lista! \n");
            var Produtos3T5 = new Produto().Listar();
            var Produtos2T5 = new List <Produto>();

            Produtos2T5.Add(new Produto()
            {
                Nome = "Iphone X", Quantidade = 5, Valor = 7900
            });
            Produtos2T5.Add(new Produto()
            {
                Nome = "Galaxy", Quantidade = 10, Valor = 2500
            });

            Produtos2T5.AddRange(Produtos3T5);

            Produtos2T5.ForEach(p => Console.WriteLine(p.Nome));


            /* Retorna os elementos de um array, que está em outro array, retorna os que são comum! */
            Console.WriteLine("\n Retorna os elementos de um array, que está em outro array, retorna os que são comum!  \n");
            int[] NumerosPares      = { 2, 4, 6, 8, 10 };
            int[] NumerosImpares    = { 1, 3, 5, 7, 9 };
            int[] NumerosMisturados = { 1, 2, 3, 4 };

            var TemNumerosPares = NumerosMisturados.Intersect(NumerosPares); /* 2 e 4 foram retornados*/



            /* Retorna os elementos de um array, que NÃO está em outro array, retorna os que são diferentes! */
            Console.WriteLine("\n Retorna os elementos de um array, que NÃO está em outro array, retorna os que são diferentes! \n");

            var NaoTemImpares = NumerosMisturados.Except(NumerosImpares); /* 2 e 4 foram retornados*/


            /* Range */
            Console.WriteLine("\n  Informando uma sequencia \n");
            var sequencia = Enumerable.Range(10, 3);/*Resultado: 10, 11, 12*/
            foreach (int item in sequencia)
            {
                Console.WriteLine(item.ToString());
            }

            /* Repeate*/
            Console.WriteLine("\n Repete a palavra 10 vezes \n");
            var repetir = Enumerable.Repeat("Lincoln", 10);
            foreach (string item in repetir)
            {
                Console.WriteLine("Nome: " + item.ToString());
            }


            #endregion


            #region Tutorial-6

            var ProdutosT6 = new Produto().Listar();


            /* Valor do produto mais caro */
            var valorPC = ProdutosT6.Max(p => p.Valor);
            Console.WriteLine("\n Valor do Produto mais caro: \n" + valorPC);


            /* Valor do produto mais barato */
            var valorPCm = ProdutosT6.Min(p => p.Valor);
            Console.WriteLine("\n Valor do Produto mais barato: \n" + valorPCm);


            /* Soma dos valores */
            var soma = ProdutosT6.Sum(p => p.Valor);
            Console.WriteLine("\n Soma dos valores: \n" + soma);


            /*  Média dos valores*/
            var media = ProdutosT6.Average(p => p.Valor);
            Console.WriteLine(" \n Média do valor: \n" + media.ToString());


            /* Agrupamento e Agregação */
            Console.WriteLine("\n _Agrupamento_ \n ");
            var ListaFruta      = new ProdutoDoHMercado().ListarFrutas();
            var ListaEletronico = new ProdutoDoHMercado().ListaEletronicos();

            ListaFruta.AddRange(ListaEletronico);
            Console.WriteLine("\n Valores junstos: \n");
            ListaFruta.ForEach(p => Console.WriteLine(JsonConvert.SerializeObject(p)));

            /* Group By Into*/
            Console.WriteLine("\n Valores Agrupados: \n");
            var ListaTotal = (from p in ListaFruta
                              group p by p.Categoria into grupo
                              select new ProdutosAgrupados
            {
                NomeDaCategoria = grupo.Key,
                ValorMinimo = grupo.Min(p => p.Valor),
                ValorMaximo = grupo.Max(p => p.Valor)
            }
                              ).GroupBy(p => p.NomeDaCategoria);

            ListaTotal.ToList().ForEach(p => Console.WriteLine(JsonConvert.SerializeObject(p)));

            /* Agrupamento exibindo os valores */
            Console.WriteLine("\n Agrupamento exibindo os valores: \n");

            //var ListaTotal2 = from p in ListaFruta
            //                  group p by p.Categoria;
            /* Com LAMBDA */
            var ListaTotal2 = ListaFruta.GroupBy(p => p.Categoria);

            foreach (var ageGroup in ListaTotal2)
            {
                Console.WriteLine("Age Group: {0}", ageGroup.Key); //Each group has a key

                foreach (ProdutoDoHMercado s in ageGroup)          // Each group has inner collection
                {
                    Console.WriteLine("Student Name: {0}", s.Nome);
                }
            }


            #endregion


            #region Tutorial-7

            Console.WriteLine("\n Rodando o Turorial 7 \n");

            /*Entity Fremework*/
            /*Estilo: EF Designer from database*/

            /* Insert */
            new Infra.EF.Repositorio.RepositorioCategoria().AdicionarCategoria(1, "Frutas");
            new Infra.EF.Repositorio.RepositorioCategoria().AdicionarCategoria(2, "Eletronicos");

            /* Alterando */
            new Infra.EF.Repositorio.RepositorioCategoria().AlterarCategoria(1, "Frutas Doces");

            /* Remove */
            new Infra.EF.Repositorio.RepositorioCategoria().ExcluirCategoria(1);

            /*Retorna todos os produtos*/
            var lista = new Infra.EF.Repositorio.RepositorioCategoria().ListarTudo();
            Console.WriteLine("--------------- EF: ");
            lista.ForEach(x => Console.WriteLine(x.Nome));

            /*=================== LinQ =======================*/

            /* Insert */
            new Infra.LinQ.Repositorio.RepositorioCategoria().AdicionarCategoria(3, "Roupas");
            new Infra.LinQ.Repositorio.RepositorioCategoria().AdicionarCategoria(4, "Games");

            /* Alterando */
            new Infra.LinQ.Repositorio.RepositorioCategoria().AlterarCategoria(4, "Carnes vermelha");

            /* Remover o valor*/
            new Infra.LinQ.Repositorio.RepositorioCategoria().ExcluirCategoria(4);

            /*Retorna todos os produtos*/
            var lista2 = new Infra.LinQ.Repositorio.RepositorioCategoria().ListarTudo();
            Console.WriteLine("--------------- LinQ: ");
            lista2.ForEach(x => Console.WriteLine(x.Nome));



            #endregion


            #region Tutorial-8

            /*
             * try
             * {
             *  int qtde = 1000000;
             *  string tempoProcessamentoNormal = ProcessamentoNormal(qtde);
             *  string tempoProcessamentoParalelo = ProcessamentoParalelo(qtde);
             *
             *  Console.WriteLine("Tempo Processamento Paralelo " + tempoProcessamentoParalelo);
             *  Console.WriteLine("Tempo Processamento Normal " + tempoProcessamentoNormal);
             *
             *
             * }
             * catch (Exception e)
             * {
             *  Console.WriteLine("Exception: " + e.Message);
             * }*/
            #endregion

            Console.ReadKey();
        }