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.
Dev .NET Sênior com experiências para Irlanda e Estados Unidos, 2x Microsoft MVP, 9x Microsoft Certified, MBA em Arquitetura de Soluções, Fundador e Instrutor LuisDev Treinamentos,