10 dicas de LINQ

Nesse artigo veremos 10 dicas para trabalharmos como o LINQ.

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 tem 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: ",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 palavras com 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", 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: Documento ", usuario1.Nome, usuario1.Documento); Console.WriteLine("Nome: Documento ", 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 Documento ", item.Nome, item.Documento); } foreach (var item in Usuario2) { Console.WriteLine("Usuário Documento ", 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 Documento ", item.Nome, item.Documento); } foreach (var item in Usuario4) { Console.WriteLine("Usuário Documento ", 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 Documento ", item.Nome, item.Documento); } foreach (var item in Usuario6) { Console.WriteLine("Usuário Documento ", 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 ", item); } }

Confira também

Artigos relacionados