Novidades do .NET 6: melhorias em LINQ - FirstOrDefault, LastOrDefault e SingleOrDefault

Renato Groffe
4 min readJun 5, 2021

--

No final de Maio (dias 25 a 27, terça a quinta) aconteceu a edição 2021 do Microsoft Build, a conferência anual da Microsoft para Desenvolvedores. Assim como já ocorreu em anos anteriores, foram diversos os anúncios envolvendo a plataforma .NET. Algumas dessas novidades estão listadas no post a seguir:

Este artigo é o sexto de uma série que cobre as novidades que vieram com esta edição do Build, na qual foi disponibilizado o Preview 4 do .NET 6. Caso deseje acessar ou mesmo rever algum dos artigos anteriores acesse os links:

Novidades do .NET 6: DateOnly e TimeOnly structs

Novidades do .NET 6: melhorias em LINQ - UnionBy e IntersectBy

Novidades do .NET 6: HTTP Logging no ASP.NET Core

Novidades do .NET 6: melhorias em LINQ - MaxBy e MinBy

Novidades do .NET 6: Minimal APIs em ASP.NET Core

Com o Preview 4 do .NET 6 diversas melhorias foram incorporadas ao namespace System.Linq. Os métodos FirstOrDefault, LastOrDefault e SingleOrDefault também passaram por mudanças:

  • Antes essas 3 extensões retornavam um item de uma coleção ou então um valor default (caso nenhum elemento fosse encontrado). Para o caso de tipos primitivos, o valor default do tipo seria retornado (zero no caso de tipos numéricos por exemplo). Em se tratando de um objeto, o padrão seria null;
  • Com esse novo release do .NET 6 será possível definir um valor default nestes 3 métodos, substituindo assim o comportamento de retornar null ou o valor padrão de um tipo primitivo.

A listagem a seguir traz exemplos de uso das novas versões destas extensões:

  • O método FirstOrDefault retornará a primeira ocorrência para uma string que coincida em partes com o nome da cidade + ano de uma Olimpíada indicada no array ultimasOlimpiadas. Se não houver correspondência, será então retornado o valor ### Ocorrência não encontrada! ###;
  • No segundo exemplo o método LastOrDefault retornará a última ocorrência para uma string que tenha equivalência com o nome do país + ano que aplicou uma derrota sobre o Brasil em Copas do Mundo. Não se encontrando uma ocorrência o valor ### Derrota não encontrada! ### será retornado;
  • Por fim, o método SingleOrDefault devolverá a string Não houve derrota (valor default) para uma pesquisa envolvendo o ano de 1994.

No teste a seguir podemos observar um primeiro teste em que não se encontrou um resultado na pesquisa de Olimpíadas:

Em seguida um teste em que não se encontrou uma derrota mais recentemente:

E por último um exemplo em que o valor default apenas foi usado em SingleOrDefault numa pesquisa envolvendo o ano de 1994:

Este projeto de testes também foi disponibilizado no GitHub:

https://github.com/renatogroffe/DotNet6_Preview4-LINQ-FirstLastSingle-Defaults_ConsoleApp

E concluo este artigo com um convite…

Dia 28/06 (segunda) às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Ao longo desta live abordarei dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 5, ASP.NET Core, Azure Functions. Ao longo da apresentação será coberto o uso de diferentes frameworks, serviços na nuvem, mensageria, bancos de dados e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.

Teremos também algumas novidades do .NET 6 demonstradas na prática!

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/live-backend-dotnet-jun-2021

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet