Recentemente recebi a ** Você não tem permissão para visualizar este link ** então dei inicio ao estudo sobre LINQ que era o meu maior interesse até então.
Mais o que vem a ser o LINQ? Language Integrated Query ou simplesmente LINQ consistem em um modelo de programação unificado para extrair e atualizar dados de diferentes fontes de dados utilizando uma sintaxe conhecida como por exemplo o C# (C-Sharp).
Com o LINQ podemos por exemplo manipular um array com uma sintaxe bem simples. Então vamos a um pequeno exemplo.
<br />
int[] num = { 1, 8, 3, 6, 5, 0, 4, 7, 2, 9 };</p>
<p>var obj = from n in num<br />
where n > 5<br />
select n;</p>
<p>GridView1.DataSource = obj;<br />
GridView1.DataBind();<br />
Como por ver no exemplo anterior, criar um array de inteiros (int ou integer) com numero. Utilizando instrução LINQ realizei uma consulta e retornando os numeros maiores que 5. E o resultado irá retornar os numeros 8, 6, 7 e 9.
Agora vamos a mais alguns exemplos:
Ordenando dados usando ORDERBY
<br />
var obj = from n in num<br />
where n > 5<br />
orderby n<br />
select n;<br />
Organizando os dados em ordem ascendente usando ORDERBY e ASCENDING
<br />
var obj = from n in num<br />
where n > 5<br />
orderby n ascending<br />
select n;<br />
Organizando os dados em ordem descendente usando ORDERBY e DESCENDING
<br />
var obj = from n in num<br />
where n > 5<br />
orderby n descending<br />
select n;<br />
Faremos em seguinda um pouco diferente. Dessa vez teremos um array de string.
<br />
string[] nomes = { "Joao", "Maria", "Paulo", "Rita", "Vitor", "Suzana", "Denis", "Ana", "Jose", "Beatriz", "Marcia" };</p>
<p>var obj = from n in nomes<br />
where n.Length > 4<br />
select n;</p>
<p>GridView1.DataSource = obj;<br />
GridView1.DataBind();<br />
Você viu no exemplo anterior uma lista de nomes na qual eu realizei uma consulta solicitando que fosse retornado os nomes que tivessem mais de 4 caracteres.
Agora vamos complicar um pouco as coisas. Vamos criar uma estrutura chamado Cliente as propriedades Codigo e Nome e nela implementaremos a Interface IComparable para nos dar a possibilidade de criar uma ordenação de dados usando o LINQ.
<br />
public class Cliente : IComparable<br />
{<br />
public int Codigo { get; set; }<br />
public string Nome { get; set; }</p>
<p> public Cliente()<br />
{<br />
}</p>
<p> public Cliente(int Codigo, string Nome)<br />
{<br />
this.Codigo = Codigo;<br />
this.Nome = Nome;<br />
}</p>
<p> public int CompareTo(object obj)<br />
{<br />
Cliente temp = (Cliente)obj;</p>
<p> if (this.Codigo temp.Codigo)<br />
{<br />
return -1;<br />
}<br />
else<br />
{<br />
return 0;<br />
}<br />
}<br />
}<br />
Agora usaremos a estrutura criando um array e adicionando dados.
<br />
List lstClientes = new List();<br />
lstClientes.Add(new Cliente(3, "Maria"));<br />
lstClientes.Add(new Cliente(5, "Pedro"));<br />
lstClientes.Add(new Cliente(1, "Paulo"));<br />
lstClientes.Add(new Cliente(4, "Rita"));<br />
lstClientes.Add(new Cliente(2, "João"));<br />
Depois de criado nosso array de Cliente com os dados, vamos a nossa consulta usando LINQ.
<br />
var obj = from c in lstClientes.ToArray()<br />
select c;<br />
O exemplo anterior não é diferente dos já citados a não ser por um pequeno detalhe. Se executarmos o código abaixo e apresenta-lo no GridView, será exibido o Codigo e o Nome. Mais podemos limitar isso como por exemplo exibir somente o Nome. Veja o exemplo:
<br />
var obj = from c in lstClientes.ToArray()<br />
select new { c.Nome };<br />
Vamos agora atribuir um filtro a nossa consulta e ordenar.
<br />
var obj = from c in lstClientes.ToArray()<br />
where c.Nome.Contains("P")<br />
orderby c.Codigo ascending<br />
select new { c.Codigo, c.Nome };<br />
Na consulta anterior realizamos a busca de nomes iniciados com "P" e ainda ordenamos por Codigo
A vantagens de se usar o LINQ é que temos uma flexibilidade muito grande para realizar consultar o que torna o código mais compacto e mais compreensível. Mais as vantagens não para por ai. Podemos ainda:
Junção de 2 ou mais estruturas com JOIN:
<br />
var obj = from p in pessoas<br />
join c in cidades on p.IdCidade equals c.IdCidade<br />
join u in ufs on c.IdUf equals u.IdUf<br />
select new { p.IdPessoa, p.NomePessoa, c.NomeCidade, u.SiglaUf };<br />
Agrupamento com GROUP BY:
<br />
var obj = from p in pessoas<br />
join c in cidades on p.IdCidade equals c.IdCidade<br />
join u in ufs on c.IdUf equals u.IdUf<br />
group u by u.IdUf into grupo<br />
from g in grupo.Distinct()<br />
select new { g.IdUf, g.SiglaUf, TotalPessoas = grupo.Count() };<br />
Enfim, existe muito mais opções de uso do LINQ e que com certeza deixará nosso trabalho mais facil e um código mais simples. Lembrando que o uso do LINQ não se limita aos exemplos acima mencionado e que o mesmo pode ser feito a consultas a dados.
Ainda para finalizar, deixo uma dica para você que quer treinar a aprender mais da sintaxe do LINQ e de quebra realizar consulta diretamente a um banco de dados, bastando usar o ** Você não tem permissão para visualizar este link **
Abraço e bom estudo!
"Se um dia você tiver que escolher entre o mundo e o amor, lembre-se: Se escolher o mundo ficará sem amor, mas se você escolher o amor, com ele conquistará o mundo" (Albert Einstein)
Leia a postagem original