advertisement

Noçoes de LINQ

50 %
50 %
advertisement
Information about Noçoes de LINQ
Technology

Published on October 27, 2012

Author: fabianoberaldi

Source: slideshare.net

Description

Apresentação sobre Language Integrated Query
advertisement

Language Integrated Query (Fundamentos)

 Consiste em um modelo de programação unificado para extrair e atualizar dados de diferentes fontes de dados . Desta forma, é possível criar consultas a partir de uma coleção, um banco de dados e utilizar uma sintaxe conhecida, como o C#, por exemplo.

Existem 3 diferentes operações de consulta LINQ: Obter a origem de dados; Criar a consulta; Executar a consulta; A origem de dados pode ser um array, umacoleção, um documento XML, um banco de dados ou umobjeto que suporte Ienumerable etc.

No exemplo a seguir , a origem de dados é uma coleção:int[] num = new int[11] {0,1,2,3,4,5,6,7,8,9,10} ;var obj = from p in num where p > 5 select p;A cláusula “from” define a origem de dados:var obj = from p in num“where” filtra:where p > 5Os operadores condicionais “OR”:where p == 5 || p == 6e “AND” também podem ser usados:where p == 5 && p == 6

A cláusula “select” aparece no final e executa a consulta:var obj = from p in num where p > 5 select p;Caso queira exibir campos específicos, defina as propriedades que contêmos dados como por exemplo:var produtos = from p in db.Produtos select new { p.CategoriaID, p.ProdutoNome, p.PrecoUnitario };Para executar, use uma instrução for ou foreach. Exemplo:int[] num = new int[11] {0,1,2,3,4,5,6,7,8,9,10} ;var obj = from p in num where p > 5 select p;foreach(var item obj){ Response.Write(item + “<br/>”); }

Podemos exibir as informações em um controle DataGridView://Retorna uma lista de produtos ordenados em ordem crescente pelo nomevar produtos = from p in db.Produtos orderby p.ProdutoNome select p;//Retorna uma lista de produtos ordenados em ordem decrescente pelo nomevar produtos = from p in db.Produtos orderby p.ProdutoNome descending select p;DataGridView.DataSource = produtos;Se preferir retornar imediatamente as informações especificadas naconsulta use:var produtos = ( from p in db.Produtos select p).ToList();var produtos = ( from p in db.Produtos select p).ToArray();

Caso queira retornar, como por exemplo, apenas os 10 primeiros produtosque possuem o Id maior do que 15 e ordenados pelo Nome:var produtos = ( from p in db.Produtos where p.ProdutoID > 15 orderby p.ProdutoNome select p).Take(10);Para agrupar elementos, use a cláusula “group”:var produtos = from p in db.Produtos group p by p.CategoriaID into grupo from item in grupo select new {item.CategoriaID, item.ProdutoID, item.ProdutoNome, item.PrecoUnitario };

Funçoes de pesquisa• Contains : Pesquisa na respectiva propriedade o texto declarado. Corresponde ao ‘LIKE’ nas expressões SQL. Exemplo (retornar todos os produtos que contém a expressão “guaraná” em seu nome):var produtos = from p in db.Produtos where p.ProdutoNome.Contains(“guaraná”) select p ;• StartsWith : Pesquisa pelo início da expressão. Exemplo (retornar todos os produtos que iniciam com a letra “a”):var produtos = from p in db.Produtos where p.ProdutoNome.StartsWith(“a”) select p ;• EndsWith : Pesquisa pelo final da expressão. Exemplo (retornar todos os produtos que terminam com a letra “a”):var produtos = from p in db.Produtos where p.ProdutoNome.EndsWith(“a”) select p ;

• FirstOrDefault : Quando se faz uma pesquisa, nem sempre temos certeza de que o dado existe. Como o “First()” retorna uma exceção, caso não encontre o dado, pode implicar em diversos erros na programação, então use o tratamento de erro try/catch. Já com o FirstOrDefault() é diferente, pois caso o dado não exista, não será gerada uma exceção, e sim será mostrado o valor Default. Exemplo (retornar o primeiro produto que começa com a letra “a”) :var produtos = (from p in db.Produtos where p.ProdutoNome.StartsWith(“a”) select p).FirstOrDefault();Obs: caso o produto não exista será retornado o valor padrão do objeto, ou seja, ovalor “null” (valor nulo);• Any : Verifica se um determinado elemento existe em uma coleção. O retorno é um valor lógico, True ou False. Exemplo:Verificar se existe o texto “aldo” na coleção:string[] nomes = {“Sabrina”, “Karina”, “Reginaldo”} ;var pesquisa = (from n in nomes where n.Contains(“aldo”) select n).Any(); // retorna True

Verificar se existe se existe algum cliente que nunca tenha feito um pedido://verifica se há algum cliente sem pedidovar resultado = from c in db.Clientes where !c.Pedidos.Any() select c;Uso de JOIN O “join” é utilizado quando precisamos unir dados de duas ou maistabelas. No exemplo a seguir as classes requisitadas são Clientes e Pedidos querepresentam tabelas de mesmo nome em um banco de dados. No exemplomostrado a seguir, iremos mostrar quantos pedidos existem para cada cliente://agrupando com Joinvar dados = from c in db.Clientes join o in db.Pedidos on c.ClienteID equals o.ClienteID into pedidos select new {Cliente = c.Nome, QtdePedidos = pedidos.Count()};

No bloco a seguir é declarada no “from” a classe Clientes na variável “c”. Comoprecisamos unir à classe Pedidos, usamos a declaração do “join” na variável “o”:var dados = from c in db.Clientes join o in db.PedidosAté aqui as classes estão unidas, porém é necessário informar a propriedade-chave(ou campo da tabela) que liga ambas as classes:on c.ClienteID equals o.ClienteIDO “into” é a lista a ser gerada e o “select new” usa o tipo anônimo para criar as duaspropriedades “Cliente” e “QtdePedidos” em tempo de execução. Observe o uso doCount() na classe pedidos indicando que será capturada a quantidade de linhasexistentes, ou seja, pedidos é uma lista e a partir dela podemos extrair diversasfunções de agregação como Count(), Avg(), Max(), Min() etc: into pedidos select new { Cliente = c.Nome, QtdePedidos = pedidos.Count() };

Expressões lambda: A expressão lambda é uma função anônima e pode conter expressões einstruções. Todas as expressões lambda usam o operador “=>”. À esquerda dooperador =>, temos os parâmetros de entrada e à direita, as expressões einstruções.Exemplo:var produtos = db.Produtos .Where(p=> p.Discontinued == true) .Select(s=> new {Nome = p.ProdutoNome, UnidadesEmEstoque = p.UnidadesEmEstoque, PrecoUnitario =s.PrecoUnitario});

Fontes: Como Programar com ASP.NET e C# - 2ª Edição – Alfredo Lotar; LINQ e C# 3.0 – 1ª Edição – Renato HaddadAutor:Fabiano Roman Beraldi – fabiano.beraldi@hotmail.com

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

#PROGRAMEJÁ - Noções CRUD Visual Studio C# - YouTube

Insert Update & Delete using LINQ to SQL in ASP.NET Part 1 - Duration: 11:20. suri k 52,291 views. 11:20 Parte 1: CRUD camada DAL - C# ...
Read more

Conceitos & Tecnologias.Net - 005 - LinqToSql - YouTube

Conceitos & Tecnologias.Net - 005 - LinqToSql Eduardo Menoncello. Subscribe Subscribed Unsubscribe 33 33. Loading... Loading... Working... Add to.
Read more

Garbage Collector Basics and Performance Hints

LINQ. Lightweight UI Test Automation with .NET. Low-Level UI Test Automation. Make Your Apps Fly with the New Enterprise Performance Tool. Make Your ...
Read more

Prinspo Alves F. Junior | LinkedIn

Linq / SQL. Experience. Desenvolvedor.Net Pleno DGI Technologies. October 2015 – Present (4 months) Desenvolvendo para cliente REDASSET. Analista de ...
Read more

Understanding Models, Views, and Controllers | The ASP.NET ...

ASP.NET MVC Storefront Part 4: Linq To Sql Spike; 5. ASP.NET MVC Storefront Part 5: ... You're Viewing Understanding Models, Views, and Controllers
Read more

ASP.NET Web API | The ASP.NET Site

Learn About ASP.NET Web API. ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including ...
Read more

Cristoffer Santoro | LinkedIn

View Cristoffer Santoro’s professional profile on LinkedIn. LinkedIn is the world's largest business network, helping professionals like Cristoffer ...
Read more

ProCycleGear - Pro & Retro Cycling Jerseys | Bib Shorts ...

Free Shipping on USA orders Over $100 Since 2004, ProCycleGear has been the leader in selling quality Italian cycling apparel at great prices.
Read more