Resumo : neste tutorial, você aprenderá o que é LINQ, como funciona e por que deve usá-lo.
Na programação, você costuma lidar com manipulação de dados. Seja projetando, classificando, filtrando ou agrupando dados, essas operações podem ser complexas e propensas a erros.
Além disso, os dados podem vir de diversas fontes, como arquivos XML, bancos de dados, API de terceiros, etc., o que torna a manipulação dos dados mais complexa. A razão é que você precisa estudar uma API específica para cada fonte de dados.
Felizmente, você pode usar uma ferramenta poderosa no .NET que pode facilitar a manipulação de dados: LINQ (Language Integrated Query).
Introdução ao LINQ
LINQ é um conjunto de extensões de linguagem em C# que permite manipular e analisar dados de maneira declarativa e concisa.
O LINQ permite escrever consultas em várias fontes de dados usando a sintaxe comum e o mesmo conjunto de operadores.
A sintaxe e os operadores do LINQ são como SQL (linguagem de consulta estruturada), mas o LINQ oferece uma abordagem mais segura e orientada a objetos para consultar e gerenciar dados.
O LINQ aproveita os seguintes recursos de linguagem em C#:
- Expressões lambda
- Métodos de extensão
- Tipos anônimos
- Sintaxe da expressão de consulta
- Genéricos
yield
evar
palavras-chave
O LINQ permite escrever consultas de duas maneiras:
- Sintaxe de consulta
- Sintaxe do Método
A sintaxe de consulta usa uma sintaxe semelhante a SQL com palavras-chave como from, where
, select
, orderby
, groupby
enquanto a sintaxe do método usa um conjunto de métodos de extensão como Where()
, Select()
, OrderBy()
, e GroupBy()
.
Exemplo de sintaxe de consulta
O exemplo a seguir mostra como usar LINQ para consultar números pares de uma lista de números usando a sintaxe de consulta:
using static System.Console;
var numbers = new List<int> { 1, 5, 2, 8, 9 };
var evenNumbers = from number in numbers
where number % 2 == 0
select number;
foreach (var number in evenNumbers)
{
WriteLine(number);
}
Linguagem de código: C# ( cs )
Como funciona.
Primeiro, defina uma lista de inteiros chamados números:
var numbers = new List<int> { 1, 5, 2, 8, 9 };
Linguagem de código: C# ( cs )
Segundo, use a from
palavra-chave para definir uma variável de intervalo chamada number
que representa cada elemento da numbers
lista, a where
palavra-chave para filtrar a variável de intervalo que seleciona apenas números pares e a select
palavra-chave para projetar os números selecionados em uma nova sequência.
var evenNumbers = from number in numbers
where number % 2 == 0
select number;
Linguagem de código: C# ( cs )
Terceiro, escreva todos os números pares selecionados no console usando um foreach
loop:
foreach (var number in evenNumbers)
{
WriteLine(number);
}
Linguagem de código: C# ( cs )
Saída:
2
8
Linguagem de código: C# ( cs )
Exemplo de sintaxe de método
O exemplo a seguir reescreve o programa acima, mas usa a sintaxe do método:
using static System.Console;
var numbers = new List<int> { 1, 5, 2, 8, 9 };
var evenNumbers = numbers
.Where(number => number % 2 == 0)
.Select(number => number);
foreach (var number in evenNumbers)
{
WriteLine(number);
}
Linguagem de código: C# ( cs )
Neste exemplo, o programa encadeia os métodos Where()
e Select()
para selecionar números pares na lista de números.
LINQ oferece um conjunto útil de operadores para consultar e manipular dados. A seguir estão os mais comuns:
Where()
– filtrar uma sequência com base em uma condição.Select()
– projeta cada membro de uma sequência em uma nova forma.OrderBy()
/OrderByDescending()
– classifica a sequência em ordem crescente ou decrescente com base em uma chave de classificação.GroupBy()
– agrupar os elementos com base em uma chave.
Vantagens do LINQ
LINQ oferece os seguintes benefícios:
- Expressividade: o LINQ permite escrever código declarativo e conciso para consulta de dados, facilitando a compreensão e a manutenção.
- Segurança de tipo: as consultas LINQ são fortemente tipadas. Isso significa que o compilador detectará erros de tipo em tempo de compilação, o que reduz os erros que podem ser descobertos apenas em tempo de execução.
- Integre objetos, dados relacionais e arquivos XML – você pode usar sintaxe de consulta unificada em fontes de dados.
Resumo
- LINQ significa Consulta Integrada de Linguagem.
- LINQ fornece uma API unificada para manipulação de dados em fontes de dados, incluindo objetos, bancos de dados relacionais e arquivos XML.