Dicas C# (linq) - Extrair lista distinta de lista de objetos complexos



Olá caros leitores,

Exemplo completo no final do post!
Link: https://dotnetfiddle.net/gh6IRc

O que veremos neste post:

Falaremos neste post sobre como obter, a partir de uma List de objetos completos com valores repetidos, uma nova lista distinta.


Cenário:

Imagine a Classe Tool :

public class Tool
    {
        public int Id { get; set; }
        public int Number { get; set; }
        public string Source { get; set; }
    }

Agora vamos criar uma lista com valores repetidos:

      var tools = new List<Tool>()
            {
                new Tool {Id=1, Price=100, Source="source1"},
                new Tool {Id=2, Price=200, Source="source2"},
                new Tool {Id=3, Price=300, Source="source3"},
                new Tool {Id=1, Price=100, Source="source1"},
                new Tool {Id=2, Price=200, Source="source2"}
            };

Nosso objetivo aqui é obter uma nova lista retirando as repetições:

Retorno esperado:

Price: 100| Source: source1 | ID: 1
Price: 200| Source: source2 | ID: 2
Price: 300| Source: source3 | ID: 3 

Com linq e 4 linhas de código podemos fazer serviço sem stresse:

List<Tool> distinctTool = tools.Where(x => x.Id > 0)
.GroupBy(x => x.Id)
  .Select(group => group.First())
.ToList();


O código acima nos retorna a lista desejada!


Abaixo vc confere o código final:


 
 

Comentários

Postagens mais visitadas deste blog

Dicas C# - Usando o LINQ para contar frequências em listas

React Tutorial - Parte 1

Jquery - Introdução