Novidades do .NET 6: melhorias em LINQ - FirstOrDefault, LastOrDefault e SingleOrDefault
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: