Junior
Estás familiarizado com LINQ?
sobes.tech IA
Resposta da IA
Sim, conheço.
LINQ (Language Integrated Query) é um conjunto de tecnologias que integram a funcionalidade de consultas na linguagem C#. Permite escrever consultas a várias fontes de dados (coleções, bases de dados, XML, etc.) diretamente no código C#, usando uma sintaxe e um modelo unificados.
Componentes principais e características do LINQ:
- Provedores LINQ: Implementam interfaces e classes que traduzem consultas LINQ em comandos específicos para uma fonte de dados concreta. Exemplos: LINQ to Objects, LINQ to SQL, LINQ to XML.
- Operadores LINQ: Extensões para IEnumerable<T> e IQueryable<T>, que fornecem operações padrão de consulta, como filtragem, projeção, ordenação, agrupamento e agregação. Existem em duas formas:
- Sintaxe de consulta (Query Syntax), que lembra SQL:
// Exemplo de sintaxe de consulta var query = from item in collection where item.Property > 10 orderby item.AnotherProperty select item.Result; - Sintaxe de métodos (Method Syntax), que usa métodos de extensão:
// Exemplo de sintaxe de métodos var query = collection.Where(item => item.Property > 10) .OrderBy(item => item.AnotherProperty) .Select(item => item.Result);
- Sintaxe de consulta (Query Syntax), que lembra SQL:
- Execução diferida (Deferred Execution): As consultas LINQ não são executadas imediatamente na sua definição. A execução ocorre apenas quando realmente se precisa do resultado (por exemplo, ao percorrer com
foreach, chamarToList(),ToArray(),Count(), etc.). Isto otimiza o trabalho com os dados. - Tipagem forte: LINQ aproveita as vantagens da tipagem estática do C#, fornecendo verificações em tempo de compilação e IntelliSense.
- Capacidade de combinar: Os operadores de consulta podem ser facilmente combinados para criar consultas complexas.
- Extensibilidade: É possível criar seus próprios provedores e operadores LINQ.
Operadores LINQ mais utilizados:
| Categoria | Operadores na sintaxe de métodos | Descrição |
|---|---|---|
| Filtragem | Where, OfType | Seleção de elementos por condição ou tipo. |
| Projeção | Select, SelectMany | Transformação de elementos ou expansão. |
| Ordenação | OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse | Ordenar elementos. |
| Agrupamento | GroupBy | Agrupar elementos por chave. |
| União | Join, GroupJoin | Combinar elementos de diferentes fontes. |
| Agregação | Count, LongCount, Sum, Average, Min, Max, Aggregate | Calcular valores agregados. |
| Quantificadores | All, Any, Contains, SequenceEqual | Verificar a presença ou correspondência de elementos. |
| Elementos | First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty | Obter elementos individuais. |
| Segmentação | Take, Skip, TakeWhile, SkipWhile | Selecionar ou pular elementos. |
| Conversão | ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable | Converter para outros tipos de coleções. |
| Geração | Range, Repeat | Criar sequências. |
| Conjuntos | Distinct, Union, Intersect, Except | Operações com conjuntos. |
| União | Zip | Combinar elementos de duas sequências. |
LINQ simplifica e torna o código mais legível para trabalhar com dados em C#.