Métodos LINQ na prática – Parte #1

Neste artigo inicio uma série sobre o LINQ e seus métodos. Por sua grande variedade de métodos com diferentes propósitos, separei em mais de uma parte para poder abordar com exemplos mais práticos e focados.

Conhecer e saber aplicar os métodos LINQ é algo essencial para desenvolvedores .NET, já que geralmente seu uso é algo rotineiro para projetos de diversos portes.

Introdução

LINQ, ou Language-Integrated Query, é uma sintaxe para consultas em .NET, compatível com fontes de dados de diferentes fontes (como listas e DbSets do EF Core).

Ela possui métodos que extendem a capacidade de coleções de dados como busca, ordenação, projeção, e outros como soma, obtenção de máximos e mínimos, entre outros objetivos.

Neste primeiro artigo vou focar nos métodos de buscas, sendo os principais deles:

  • Single e SingleOrDefault
  • First e FirstOrDefault
  • Where

Métodos de Buscas

Entre os métodos de busca existem os que retornam um elemento e os que realizam filtragem, este último retornando os elementos cuja expressão lambda, que retorna um valor booleano, seja verdadeira.

Single e SingleOrDefault

Os métodos Single e SingleOrDefault retornam um único elemento específico de uma coleção de dados. A diferença entre eles está no comportamento quando nenhum elemento é encontrado.

No caso do Single, as seguintes exceções podem ser lançadas:

  • ArgumentNullException: se a fonte de dados ou a expressão booleana é nula.
  • InvalidOperationException: se mais de um elemento ou nenhum atende a expressão booleana, ou se a coleção estiver vazia.

Já no caso do SingleOrDefault, existe uma mudança importante, evidenciada abaixo.

  • ArgumentNullException: se a fonte de dados for nula.
  • InvalidOperationException: se mais de um elemento atende a expressão booleana.

Se o elemento não for encontrado, é retornado o valor padrão daquele tipo.

First e FirstOrDefault

Os métodos First e FirstOrDefault retornam o primeiro elemento de uma coleção de dados, permitindo receber um parâmetro de expressão lambda que retorna um valor booleano. Assim como nos dois métodos anteriores, a diferença entre eles está no comportamento quando nenhum elemento é encontrado.

No caso do First, as seguintes exceções podem ser lançadas:

  • ArgumentNullException: se a fonte de dados ou expressão booleana forem nulas.
  • InvalidOperationException: Se nenhum elemento atende a expressão lambda booleana, ou se a coleção estiver vazia.

Já no caso do FirstOrDefault, existe uma mudança importante, evidenciada abaixo.

  • ArgumentNullException: se a fonte de dados ou expressão booleana forem nulas.

Se o elemento não for encontrado, é retornado o valor padrão daquele tipo.

Where

O método Where filtra uma coleção de valores baseado em uma expressão lambda booleana.

A exceção que ele pode lançar é a ArgumentNullException, que ocorre quando a coleção ou a expressão lambda são nulos.

Aplicação

É hora de aplicar na prática esses 5 métodos. Para começar, defini uma classe Student, que contém dados de nome (Name) e nota (Grade). A idéia é utilizar esses dois dados para realizar busca e filtragem.

Com esta classe definida, vou então utilizar os métodos sobre uma lista de Student.

O exemplo acima utiliza os métodos Single e First, e suas respectivas versões SingleOrDefault e FirstOrDefault, demonstrando o seu uso e lançamento de exceções dependendo da expressão lambda. Além disso, o método Where é utilizado, com a iteração e impressão de seus elementos filtrados.


Quer alavancar sua carreira como Desenvolvedor(a) .NET?

Opa, aqui é o Luis Felipe (LuisDev), criador do blog LuisDev.

Além de Desenvolvedor .NET Sênior, eu sou instrutor de mais de 700 alunos e também tenho dezenas de mentorados.

Conheça o com mais de 800 video-aulas sobre C# e desenvolvimento de APIs com ASP NET Core, Microsserviços com ASP NET Core, Arquitetura de Software, Computação em Nuvem, SQL, HTML, CSS e JavaScript, JavaScript Intermediário, TypeScript, Desenvolvimento Front-End com Angular, e Desenvolvimento Front-end com React. Diversos mini-cursos disponíveis aos alunos e atualizações gratuitas.

Suporte dedicado, e comunidade de centenas de alunos.

Completo e online, destinado a profissionais que querem dar seu próximo passo em sua carreira como desenvolvedores .NET.

Clique aqui para ter mais informações e garantir sua vaga


Conclusão

Eu não sou do tipo de pessoa que afirma algo como se fosse uma lei ou regra. Mas acredito que dominar o LINQ e seus métodos é algo muito importante para uma carreira de desenvolvedor .NET.

Geralmente eu gosto de utilizar as versões OrDefault dos métodos de busca, já que me dão a chance de checar por um valor padrão (geralmente nulo), me dando mais controle sobre o fluxo do código.