.NET - LINQ -
Operadores padrão de consultas.
![]() |
E lá vou eu novamente falar sobre o LINQ , veja meus artigos anteriores sobre o assunto nos links abaixo: |
LINQ - Language Integrated Query
O grande tchan do LINQ é que ela foi criada com o objetivo de simplificar consultas a informações na memória em coleções como listas e arrays, bem como informações armazenadas em base de dados , documentos XML , arquivos e outras fontes de dados. Ela realiza uma mapeamento objeto Relacional de forma que a o acesso a dados é feito através do framework LINQ e as instruções SQL são geradas implicitamente.
Usando o LINQ você não vai precisar conhecer SQL , XML , XPath, ADO .NET para acessar/atualizar dados pois após referenciar as classes LINQ e efetuar o mapeamento basta usar os recursos do framework LINQ para realizar as tarefas comuns conhecidas como CRUD (Create, Update, Delete).
Compare abaixo dois trechos de código com acesso a dados, o primeiro usando ADO .NET e o segundo usando LINQ:
1- ADO .NET
| Dim c As
SqlConnection = New SqlConnection(stringConexao) c.Open() Dim cmd As SqlCommand = New SqlCommand("SELECT p.ProductID, p.ProductName FROM Products p WHERE p.ProductName = @p0") cmd.Parameters.AddWithValue("@p0", "Teste) Dim dr As DataReader = c.Execute(cmd) While dr.Read() Dim ID As String = dr.GetString(0) Dim ProductName As String = dr.GetString End While |
2- LINQ To SQL
| Dim db as new
DataContext1() Dim consulta = from p in db.Products
where (p.ProductName=="Teste") |
O código ficou mais enxuto mais elegante, e , além da economia de código o LINQ continua fortemente tipado e usa os recursos do IntelliSense da plataforma .NET sendo que após efetuar o mapeamento usando as consultas LINQ você terá acesso aos campos da tabela de dados que foram mapeados sem precisar conhecer a sua estrutura de dados.
Neste artigo eu estou relacionando os principais operadores usados nas consultas LINQ de forma a ser um guia de referência e consulta para eventuais dúvidas.
1-) Relação dos operadores padrão LINQ:
| Operador | Lazy ? | Descrição |
|---|---|---|
| Aggregate | No | Aplica uma função a uma seqüência , originando um valor único |
| All | No | Aplica uma função a uma seqüência para verificar se todos os elementos satisfazem a função. |
| Any | No | Aplica uma função a uma seqüência para verificar se qualquer elemento satisfaz a função. |
| Average | No | Calcula a média de um seqüência numérica. |
| Concat | Yes | Produz a concatenação de duas seqüências S1 e S2. |
| Contains | No | Procura a seqüência para verificar se a mesma contem um dado elemento. |
| Count | No | Conta o numero de elementos em uma seqüência , originando um resultado inteiro. |
| DefaultIfEmpty | Yes | Data uma seqüência S, produz S ou a seqüência com o valor padrão se S estiver vazia. |
| Distinct | Yes | Retorna a seqüência com valores duplicados eliminados. |
| ElementAt | No | Retorna o i-ésimo elemento de uma seqüência. |
| ElementAtOrDefault | No | Retorna o i-ésimo elemento de uma seqüência se a seqüência ou o padrão se a seqüência estiver vazia. |
| Empty | Yes | Produz uma seqüência vazia. |
| EqualAll | No | Compara duas seqüências por igualdade. |
| Except | Yes | Dada duas seqüências S1 e S2, retorna o conjunto diferença S1 S2. |
| First | No | Retorna o primeiro elemento da seqüência. |
| FirstOrDefault | No | Retorna o primeiro elemento da seqüência, ou o valor padrão se a seqüência esta vazia. |
| GroupBy | Yes | Agrupa os elementos de uma seqüência pela chave. |
| GroupJoin | Yes | Realiza uma junção de duas seqüências S1 e S2 produzindo um resultado hierárquico. |
| Intersect | Yes | Dada duas seqüências S1 e S2, retorna o conjunto intersecção de S1 e S2 |
| Join | Yes | Realiza uma junção tradicional interna de duas seqüências S1 e S2. |
| Last | No | Retorna o último elemento de uma seqüência. |
| LastOrDefault | No | Retorna o último elemento de uma seqüência ou o valor padrão se a seqüência estiver vazia. |
| LongCount | No | Conta o número de elementos em uma seqüência, produzindo um resultado do tipo long. |
| Max | No | Retorna o valor máximo de uma seqüência. |
| Min | No | Retorna o valor mínimo de uma seqüência |
| OfType | Yes | Produz os elementos de uma seqüência que coincide com um dado tipo. |
| OrderBy | Yes | Ordena uma seqüência de elementos pela chave na ordem ascendente. |
| OrderByDescending | Yes | Ordena uma seqüência de elementos pela chave na ordem descendente. |
| Range | Yes | Produz uma seqüência de inteiros em um dado intervalo. |
| Repeat | Yes | Produz uma seqüência de valores pela repetição de um dado valor n vezes. |
| Reverse | Yes | Inverte os elementos de um seqüência. |
| Select | Yes | Aplica a função de projeção a uma seqüência , originando uma nova seqüência. |
| Single | No | Retorna o único elemento de um seqüência única. |
| SingleOrDefault | No | Retorna o único elemento de uma seqüência , ou valor padrão se estiver vazia. |
| Skip | Yes | Pula o primeiro elemento de uma seqüência , produzindo os elementos restantes. |
| SkipWhile | Yes | Data uma função F e seqüência S, pula os elementos iniciais de S onde F é verdadeira. |
| Sum | No | Calcula a soma de uma seqüência numérica. |
| Take | Yes | Produz os primeiros n elementos de uma seqüência. |
| TakeWhile | Yes | Dada uma função F e uma seqüência S, produz os elementos iniciais de S onde F for verdadeira. |
| ThenBy | Yes | Toma uma seqüência ordenada e produz uma secundária , na ordem ascendente. |
| TheyByDescending | Yes | Toma uma seqüência ordenada e produz uma secundária , na ordem descendente. |
| ToArray | No | Percorre uma seqüência, capturando os resultados em um array. |
| ToDictionary | No | Percorre uma seqüência, capturando os resultados em um Dictionary<K, V>. |
| ToList | No | Percorre uma seqüência, capturando os resultados em uma List<T>. |
| ToLookup | No | Percorre uma seqüência, capturando os resultados em um Lookup<K, IEnumerable<V>>. |
| ToSequence | Yes | Converte uma seqüência em uma seqüência IEnumerable para usar com consulta padrão. |
| Union | Yes | Dada duas seqüências S1 e S2 retorna o conjunto união de S1 e S2. |
| Where | Yes | Aplica uma função Booleana a uma seqüência, produzindo uma sub-seqüência. |
Obs: Lazy é um atributo que significa 'quanto mais tarde melhor' e tem o objetivo de carregar um item sob demanda. (Lazy Loading)
2-) Relação dos operadores padrão usados nas consultas LINQ
| Operador | Descrição |
| OfType |
Filtro baseado na afiliação do tipo |
| Select/SelectMany | Projeção baseada na função de transformação |
| Where | Filtro baseado na função de predicação |
| Count | Contagem baseada em função de predicação opcional |
| All/Any | Quantificação universal/existencial baseada na função de predicação |
| First/FirstOrDefault | Membro inicial de acesso com base em função de predicação opcional |
| ElementAt | Membro de acesso em posição especificada |
| Take/Skip | Membros de acesso antes/depois de posição especificada |
| TakeWhile/SkipUntil | Membros de acesso antes/depois que uma função de predicado é satisfeita |
| GroupBy | Partição baseada em função de extração de chave |
| ToDictionary | Cria dicionário de chave/valor com base em função de extração de chave |
| OrderBy/ThenBy | Classificação em ordem ascendente com base em função de extração de chave e função de comparação opcional |
| OrderByDescending/ ThenByDescending |
Classificação em ordem descendente com base em função de extração de chave e função de comparação opcional |
| Reverse | Inverte a ordem de uma seqüência |
| Fold | Agrega valor sobre múltiplos valores com base na função de agregação |
| Min/Max/Sum/Average | Funções de agregação numéricas |
| Distinct | Filtra membros duplicados |
| Except | Filtra elementos que são membros do conjunto especificado |
| Intersect | Filtra elementos que não são membros do conjunto especificado |
| Union | Combina membros distintos de dois conjuntos |
| Concat | Concatena os valores de duas seqüências |
| ToArray/ToList | Colocam em buffer os resultados de consulta em array ou List<T> |
| Range | Cria uma seqüência de números em um intervalo |
| Repeat | Cria uma seqüência de múltiplas cópias de um determinado valor |
Aguarde em breve mais artigos sobre
LINQ ...![]()
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ??
Chegou o
Super DVD C# com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
NET - LINQ a seu dispor - Sintaxe e Operadores - Macoratti ...
http://www.microsoft.com/brasil/msdn/Tecnologias/arquitetura/LINQ.mspx
LINQ - http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx