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

Continuando essa série sobre o LINQ e seus métodos, nesta parte 2 vou focar nos métodos de projeção de listas: Select e SelectMany.

Este é um artigo bem direto ao ponto por conta do conteúdo ser melhor absorvido com exemplos práticos de projeção de dados.


Select

Permite a projeção de items de uma coleção em um novo formato. Por exemplo, é bastante utilizado para obter uma lista de objetos View Model (modelos de saída) a partir de uma coleção de objetos de domínio.

Dá para usar o AutoMapper para obter o mesmo resultado? Dá! Mas em alguns cenários o AutoMapper pode ficar consideravelmente mais complexo do que simplesmente utilizar o Select.

Mostrarei esse exemplo no código abaixo, começando pelas classes que vão ser mapeadas entre si através da projeção usando o método Select.

Com as classes definidas, basta utilizar o método Select na classe principal e realizar a projeção dos dados de Pessoa.


SelectMany

Método de projeção que permite agrupar propriedades de listas de objetos de uma lista em uma coleção única.

Um exemplo prático com certeza vai deixar as coisas mais claras. Considere uma coleção de objetos de tipo Pessoa, e que cada Pessoa pode ter múltiplos e-mails ou telefones de contato. Como seria possível agrupar todas informações em uma lista única?

Poderíamos iterar pela coleção de objetos Pessoa, e em seguida iterar em cada coleção de e-mails ou telefones de contato, adicionando em uma coleção única. O método SelectMany oferece uma maneira mais prática de fazer isso sem utilizar estruturas de repetição!

Abaixo está a classe Pessoa utilizada no exemplo.

E agora, o exemplo completo mostrando a junção das listas de diversos objetos de uma lista simulando um envio em lote com a classe EmailService.


Inscreva-se na lista de espera do Método .NET Direto ao Ponto, um treinamento completo sobre C#, APIs com ASP.NET Core e Microsserviços:  Inscreva-se aqui.

São quase 200 vídeo-aulas sobre temas como C#, ASP NET Core 5, EF Core, CQRS, Clean Architecture, Autenticação e autorização com JWT, Testes Unitários, além de mini-cursos em Microsserviços, Performance em .NET, ASP NET Core e Azure, Docker, Carreira Internacional em .NET, e mais.


Conclusão

O método Select encontra seu espaço em diversas tarefas do dia a dia de um desenvolvedor. O SelectMany tem menos casos de uso, mas certamente se mostra bem útil em exemplos como o apresentado, e pelo qual já passei também.

Assim como no artigo anterior, é importante ressaltar: dominar o LINQ e seus métodos é algo muito importante para uma carreira de desenvolvedor .NET.