Sobes.tech
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);
      
  • 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, chamar ToList(), 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#.