LINQ - Language Integrated Query | LINQ | Forum | C# Brasil


LINQ - Language Integrated Query | LINQ | Forum

Login form protected by Login LockDown.


 
Você precisa fazer login para escrever mensagens Login Registrar


Registrar? | Recuperar Senha?

Pesquisar Fóruns:


 






Minimum search word length is 4 characters – Maximum search word length is 84 characters
Uso do Curinga nas Pesquisa:
*  igual a qualquer número de caracteres    %  igual a exatamente um caractere

LINQ – Language Integrated Query
Leia a postagem original

UsuárioMensagem

13:32
17 maio 2012


Mateus Pontes

Member

editoriais 5

Fala galera!!

 

Sempre que posso utilizo expressões lambdas um link que me ajuda muito é o ** Você não tem permissão para visualizar este link **, além do código ficar limpo fiz alguns testes e melhor consideravelmente a performance.

 

Vale a pena.

12:35
22 março 2011


suricat

Franca/ SP

New Member

editoriais 1

Mensagem editada 12:36 – 22 março 2011 por suricat


Aí, sou novo aqui no fórum, mas já vou começar dando uma ajuda aqui =D

 

Comecei a programar com o LINQ to SQL há poucas semanas e, ele agilizou MUITO o meu trabalho, um sistema que eu demoraria 1 mês para desenvolver (com cadastro de clientes, produtos, fornecedores, fluxo de caixa, vendas), acabou por se finalizar na metade do prazo graças ao LINQ!!!

 

achei bem interessante esse recurso do Framework 3.5 e eu gostaria d compartilhar um link que me ajudou muito com vários exemplos de todas operações possíveis de se fazer com o LINQ:

** Você não tem permissão para visualizar este link **

 

@TOPIC

malz pela ress do tópico de 5 meses atrás, mas é que eu acho q esse LINQ é um recurso que deve ser estudado melhor, e essa página q eu passei tem informações muito boas

20:54
19 novembro 2010


Raphael Cardoso

Admin

editoriais 87

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 &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 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



About the C# Brasil Forum

O fuso horário do Fórum:UTC -3

Maior Número de Usuários Online: 31

Online Agora:
6 Visitantes

Atualmente navegando Tópico:
1 Visitante

Estatísticas do Fórum:

Grupos: 1
Fóruns: 16
Tópicos: 183
Editorias: 379

Grupo de Usuários:

Existem 1672 Membros

Existem 3 Admins

Participantes mais ativos:

Gabriel Gomes – 14
Lucas Bessa – 7
listmaier – 7
Diego Canedo – 7
Anderson Bernardi – 7
Mauricio Naozuka – 6

Novos Membros Recentes: alexander, tfbarbosa, sandro.herbst, Eric Humberto, Francismar, saulop4

Administradores: Raphael Cardoso (87 Mensagens), Rodrigo Coimbra (5 Mensagens), Thiago Suzuki (4 Mensagens)