Início > C# > Trabalhando com Linq e C# – Parte 4

Trabalhando com Linq e C# – Parte 4

Bom no ultimo post da nossa série, iremos falar sobre um grande incremento do Linq, trata-se dos operadores de consulta. Imagine em todos os exemplos que foram feitos até o momento utilizando os métodos de extensão da classe Enumerable definida no namespace System.Linq, em alguns exemplos a definição é simples, mas  dependendo da complexidade do desenvolvimento, estes métodos podem se tornar difíceis e “sujos” em sua leitura, por isso nestes casos podemos utilizar os operadores de consulta que se semelham bastante nas consultas SQL.

Lembra do nosso método Select do primeiro post onde tínhamos o uso de Lambda Expression, veja um exemplo como seria utilizando os operadores de consulta .

 

// Primeira forma de utilizada como exemplo

IEnumerable<Pessoa> p = listaPessoa.Select(pessoal => new Pessoa() { Nome = pessoal.Nome, SobreNome = pessoal.SobreNome, Idade = pessoal.Idade });

 

 

//Utilizando operadores de consulta

var pessoa1 = from pessoa in listaPessoa

                select pessoa;

 

Repare que a linguagem (from pessoa in listaPessoa) é bastante semelhante a SQL, o C# resolve essa expressão para o método Select correspondente. O operador From defini o alias da coleção (listaPessoa), e o operador  Select, seleciona todos os campos do objeto Pessoa.

Agora imagine que houvesse a necessidade de filtrar os dados, o que anteriormente fizemos utilizando o método Where, como ficaria utilizando os operadores de consulta, veja um exemplo:

//Utilizando operadores de consulta

var pessoa1 = from pessoa in listaPessoa

               where pessoa.Idade == 10

               select pessoa;

 

Neste caso eu apenas inseri o operador where e pedia para me retornar somente as pessoas o qual a idade fosse 10 anos.

E no caso da ordenação que utilizamos no segundo post os métodos OrderBy e OrderByDescending, como ficaria com os operadores de consulta ? Veja abaixo:

//Utilizando operadores de consulta

var pessoa1 = from pessoa in listaPessoa

                orderby pessoa.Nome, pessoa.SobreNome

                select pessoa;

 

Viu como é simples, bastou apenas inserir OrderBy e dizer qual campo quero fazer a ordenação, repare também que estou pedindo para fazer a ordenação por dois campos, ou seja, primeiro ordene o Nome e posteriormente o Sobrenome (ThenBy()).

E a questão de agrupamento, também é possível utilizando operadores de consulta ? Sim, veja um exemplo abaixo como ficaria:

//Utilizando operadores de consulta

var pessoa1 = from pessoa in listaPessoa

                group pessoa by pessoa.Nome;

 

 

Simples não é ?!, Os operadores de consulta facilitam muito a vida do desenvolvedor, já é percebível que reduzimos todos os exemplos feitos anteriormente por algumas linhas.

Para finalizar, um exemplo da junção dos dados (Join):

 

var pessoaEndereco = from pessoa in listaPessoa

                       join endereco in listaEndereco

                       on pessoa.Nome equals endereco.NomePessoa

                       select new { pessoa.Nome, pessoa.SobreNome, endereco.Cidade, endereco.Estado };

 

No código acima, a novidade é o operador Join, onde é feito uma igualdade entre pessoa.Nome e endereço.NomePessoa, e devolvido um objeto com os campos de pessoa.Nome, pessoa.SobreNome, endereço.Cidade, endereço.Estado. Ao contrário do Sql a ordem das expressões na cláusula on de uma expressão de Linq é importante. Você precisa posicionar o item a partir do qual você está fazendo a junção(referenciando os dados na coleção na cláusula from) à esquerda do operador equals, e o item com o qual você está fazendo a junção(referenciando os dados na coleção na cláusula join) à direita.

 

É isso ai, espero que aproveitem estas informações, duvidas e sugestões enviem um comentário..

 

Abraço

 

Categorias:C#
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: