O Linq de Language Integrated Query, é uma sintaxe de consulta onde podemos fazer essas consultas em objetos, datasets, SQL, Entities e XML.

Nesse artigo veremos 10 dicas para trabalharmos como o LINQ. Todo conteúdo abaixo esta comentado para um melhor entendimento.


//Dica 1

//Consultando a letra de cada palavra

static void LinqObjects()

{          

    //declarando uma lista de letras

    List<char> letras;

    //jogando cada letra na lista de letras

    letras = "Este método fará um loop para cada letra".ToList();

     //Usando linq para consultar as letras

    var l = from letra in letras select letra;

    foreach (var item in l)

    {

        Console.WriteLine(item);

    }       

}

//Dica 2

//Utilizando linq como where

static void LinqObjectsWhere()

{

    //Declarando uma lista de string

    List<String> palavras;

 

    //Separando cada palavra da frase e jogando na lista

    palavras = "Esse método vai filtrar as palavras que contem o tamanho menor e igual a 4".Split(' ').ToList();

     //Fazendo um filtro com as palavras que possui até 4 letras

    var p = from palavra in palavras

            where palavra.Length <= 4

            select palavra;

    foreach (var item in p)

    {

        Console.WriteLine("A palavra {0} tem {1} letras", item, item.Length);

    }           

}

 //Dica 3

//Utilizando linq com orderby

static void LinqObjectsOrdem()

{

    //Declarando uma lista de string

    List<String> palavras;

     //Separando cada palavra da frase e jogando na lista

    palavras = "Esse método vai ordenar as palavras pelo seu tamanho".Split(' ').ToList();

     //Ordenando as palavras pelo seu tamanho

    var p = from palavra in palavras

            orderby palavra.Length

            select palavra;

    foreach (var item in p)

    {

        Console.WriteLine("Palavra: {0}",item);

    }

}

//Dica 4

//Utilizando Linq com groupby

static void LinqObjectGroup()

{

    //Declarando uma lista de string

    List<String> palavras;

     //Separando cada palavra da frase e jogando na lista          

    palavras = "Esse método vai agrupar as palavras que possui a mesma quantidade de letras".Split(' ').ToList();       

   //Agrupando as palavras pelo seu tamanho

    var p = from palavra in palavras

            group palavra by palavra.Length;

 

    //lista a quantidade de palavras que possui o mesmo numero de letras

    foreach (var item in p)

    {       Console.WriteLine("--------------------------------------------------------------------");

        Console.WriteLine("Existem {0} palavras com {1} letras", item.Count(), item.Key);

       //lista as palavras desses tamanhos

        foreach (var i in item)

        {

            Console.WriteLine(i);

        }

    }

}

//Dica 5

//Utilizando Linq com XML

static void LinqXML()

{

    //Declarando uma lista de usuários

    List<Usuario> Usuarios = new List<Usuario>();

     //Inserindo o primeiro usuário

    Usuarios.Add(new Usuario() {

            ID=1,

            Documento="11111",

            Nome="Maria"

    });

     //Inserindo o segundo usuário

    Usuarios.Add(new Usuario() {

            ID=2,

            Documento="22222",

            Nome="João"

    });

     //Inserindo o terceiro usuário

    Usuarios.Add(new Usuario() {

        ID=3,

        Documento="333333",

        Nome="José"

    });

     //Montando o xml com linq

    System.Xml.Linq.XElement xml = new System.Xml.Linq.XElement("Usuarios",

                        from usuario in Usuarios

                        select new System.Xml.Linq.XElement("Usuario",

                            new System.Xml.Linq.XAttribute("ID", usuario.ID),

                            new System.Xml.Linq.XElement("Nome", usuario.Nome),

                            new System.Xml.Linq.XElement("Documento", usuario.Documento)));

 

    Console.WriteLine(xml);

                          

}

//Dica 6

//Utilizando função lambda

static void FuncaoLambda()

{

    //Os dois primeiros parametros int's, são os tipos que vão receber como parametros

    //Sempre o ultimo parametro é o seu retorno

    //criando a função somar

    Func<int, int, int> Somar = (x, y) => x + y;

    Console.WriteLine("Somando : ",Somar(1, 2));

 }

//Dica 7

//chamando o metodo de extensão de uma string

static void ChamarExtension()

{

    "email@email.com".ValidarEmail();

 }

 //para o método ser uma extensão precisa ser static e seguida da palavra this dentro do argumento  

public static void ValidarEmail(this string Email)

{

    Console.WriteLine("Validando e-mail{0}", Email);

}

 //Dica 8

//metodos anonimos

public static void MetodosAnonimos()

{

    //Criando os metodos sem uma classe definida

    var usuario1 = new { Nome = "Fernando", Documento = "1234" };

    var usuario2 = new { Nome = "Maria", Documento = "099888" };

 

    Console.WriteLine("Nome: {0} Documento {1}", usuario1.Nome, usuario1.Documento);

    Console.WriteLine("Nome: {0} Documento {1}", usuario2.Nome, usuario2.Documento);

}

 //Dica 9

//Consultando com Generic

static void SelectInit()

{

    //Criando uma lista de usuários

    List<Usuario> Usuarios = new List<Usuario>();

     //Inserindo o primeiro usuário

    Usuarios.Add(new Usuario() {

         ID=1,

        Nome="Fernando",

        Documento="11111"

    });

     //Inserindo o segundo usuário

    Usuarios.Add(new Usuario()

    {

        ID = 1,

        Nome = "Maria",

        Documento = "22222"

    });

 

    //Inserindo o terceiro usuário

    Usuarios.Add(new Usuario()

    {

         ID = 1,

        Nome = "Marcia",

        Documento = "2222"

    });

            

    //Consultando conteudo pelo inicio da palavra

    var Usuario =Usuarios

                    .Where (u => u.Nome.StartsWith("M"))

                    .Select(u=>u);

    //ou

    var Usuario2 = from User in Usuarios

                    where User.Nome.StartsWith("M")

                    select User;

 

    foreach (var item in Usuario)

    {

        Console.WriteLine("Usuário {0} Documento {1}", item.Nome, item.Documento);

    }

 

    foreach (var item in Usuario2)

    {

        Console.WriteLine("Usuário {0} Documento {1}", item.Nome, item.Documento);

    }

 

    //consultando conteudo pelo meio da palavra

    var Usuario3 = Usuarios

                    .Where(u => u.Nome.Contains("n"))

                    .Select(u => u);

    //ou

    var Usuario4 = from User in Usuarios

                    where User.Nome.Contains("n")

                    select User;

 

    foreach (var item in Usuario3)

    {

        Console.WriteLine("Usuário {0} Documento {1}", item.Nome, item.Documento);

    }

 

    foreach (var item in Usuario4)

    {

        Console.WriteLine("Usuário {0} Documento {1}", item.Nome, item.Documento);

    }

 

    //consultando conteudo pelo final da palavra

    var Usuario5 = Usuarios

                    .Where(u => u.Nome.EndsWith("o"))

                    .Select(u => u);

    //ou

    var Usuario6 = from User in Usuarios

                    where User.Nome.EndsWith("o")

                    select User;

 

    foreach (var item in Usuario5)

    {

        Console.WriteLine("Usuário {0} Documento {1}", item.Nome, item.Documento);

    }

 

    foreach (var item in Usuario6)

    {

        Console.WriteLine("Usuário {0} Documento {1}", item.Nome, item.Documento);

    }

}

//Dica 10

//Utilizando dicionário com linq

static void DicionarioLinq()

{

    //criando o dicionario

    Dictionary<int, string> nomes = new Dictionary<int, string>();

 

    //inserindo os conteudos

    nomes.Add(1, "Maria");

    nomes.Add(2, "João");

    nomes.Add(3, "José");

    nomes.Add(4, "Fernando");

 

    //filtrando contendo onde as chaves são pares

    var nome = from n in nomes

                where (n.Key % 2) == 0

                select n;

 

    foreach (var item in nome)

    {

        Console.WriteLine("Nomes que contem a chave par são {0}", item);

    }

}

Confira também