domingo, 5 de junho de 2011

LinqToObject

Olá pessoal, está é a primeira postagem do meu blog que é focado especialmente para .Net, hoje falaremos de LinqToObject, concerteza é uma das tecnologias muito utilizada hoje por varias razões, como a possíbilidade de filtrar dados, selecionar os campos que queremos, agrupar, ordenar e tudo isso trabalhando desconectado do banco de dados, isso para Web é uma beleza, hoje desmonstrarei um exemplinho bem básico de como fazer pesquisa em classe utilizando LinqToObject, vamos criar um programinha para cadastro de produto:

1 passo:
         Criem um projeto do tipo ConsoleApplication em C#

2 passo:
        Criem uma Classe chamada produtos e nela coloquem o código abaixo:

           public string _Produto { get; set; }
           public decimal _Preco { get; set; }

        Esses são nossos atributos para cadastro e futuramente pesquisa de um produto.

3 passo:
       Na classe Program no método Main coloquem o código abaixo:

while (true)
            {
                try
                {
                    Console.WriteLine("Digite 1 para cadastrar um produto, ou 2 para consultar um produto no estoque.");
                    int Opcao = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine();
                    if (Opcao == 1)
                    {
                        CadastroProduto();
                    }
                    else if (Opcao == 2)
                    {
                        ConsultaProduto();
                    }
                    else
                    {
                        throw new Exception("Operação inválida!");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.ReadLine();
                    Main(new string[] { });
                }
            }
 
Aqui no nosso método main será pedido a operação que queremos realizar, 1 para cadastrar um produto ou 2 para consultar um produto ja cadastrado, o while serve para que sempre pedimos uma opção para o usuário mesmo após ele realizar uma escolha.
 
4 passo:
 
Cole os métodos abaixo na classe Program embaixo do método main:
 
//Pedi o nome e o preço do produto para cadastro direto na nossa Classe de produtos
 
 private static void CadastroProduto()
        {
            Console.WriteLine("Digite o nome do produto: ");
            string Produto = Console.ReadLine();
            Console.WriteLine("Digite o preço do produto: ");
            decimal Preco = Convert.ToDecimal(Console.ReadLine());
            lstProdutos.Add(new Produtos { _Produto = Produto, _Preco = Preco });
            Console.WriteLine("Produto cadastrado com sucesso!");
            Console.WriteLine();
        }
 
// Consulta produtos cadastrados (Não se esqueçam C# é case sensitivy) ordena pelo nome e preco e se encontrar resultados exibe na tela.
 
        private static void ConsultaProduto()
        {
            Console.WriteLine("Digite o nome do produto a ser pesquisado no estoque: ");
            string NomeProduto = Console.ReadLine();
 
            //Realiza a consulta de fato onde:
            //Produto: pode ser um nome qualquer definido por você
            //lstProdutos = Nossa lista de produtos cadastrados onde será feita nossa pesquisa
           //Produto._Produto.Contains(NomeProduto) = Aqui é o passo essencial, onde verifica se a Classe possui um produto ao qual o usuário informou na tela.
           //orderby Produto._Produto, Produto._Preco = ordena pelo nome do produto e depois pelo preço assim como no SQL podemos definir se será em ordem crescente (ascending) ou decrescente (descending)
           //select Produto = Seleciona Todos os campos da classe Produtos, se quiser pode selecionar somente o nome do produto escrevendo Produto._Produto ou somente o Preço escrevendo Produto._Preco.
 
            var ListaProduto = from Produto in lstProdutos where Produto._Produto.Contains(NomeProduto) orderby Produto._Produto, Produto._Preco ascending select Produto;
 
//Verifica se encontrou algum resultado, se sim faz um foreach da Classe Produtos na pesquisa,afinal nossa pesquisa nada mais é do que um filtro da Classe produto.
 
            if (ListaProduto.Count() >= 1)
            {
                foreach (var Produto in ListaProduto)
                {
                    Console.WriteLine("Nome do Produto: " + Produto._Produto + " Preço: " + Produto._Preco);
                }
                Console.WriteLine();
           
            }else
            {
                Console.WriteLine("Produto não encontrado!");
            }
        }
 
Bom esta pronto, um exemplo fácil e pratico de como usar LinqToObject, a idéia é crie uma classe com os atributos que você deseja, popule as mesmas com os dados e use uma consulta Linq para obter os dados que deseja :P.

Um comentário: