Continuando os artigos sobres vetores (arrays) em C#, hoje vamos aprender como remover valores duplicados. Se você ainda não vi os artigos anteriores, segue a lista.
O método Distinct()
Em C#, não podemos remover valores de um vetor (array). Em vez disso, teremos que criar um novo array com os valores que desejamos e remover.
A boa notícia é que não precisamos criar uma estrutura de repetição com for()
ou foreach()
para passar valores de um array para outro, o método Distinct()
da classe Linq se encarrega deste processo.
O exemplo a seguir obtém valores distintos de uma matriz usando o método Distinct()
e cria uma nova matriz.
using System;
using System.Linq; // <-- Não esquecer de importar a classe Linq
public class Program
{
public static void Main()
{
int[] numeros = { 1, 2, 3, 4, 3, 55, 23, 2 };
int[] retiraDuplicados = numeros.Distinct().ToArray();
Console.WriteLine("Arrays de Números Duplicados:");
foreach(int item in numeros) Console.WriteLine(item);
Console.WriteLine("\n\nNova Array com duplicados removidos:");
foreach(int item in retiraDuplicados) Console.WriteLine(item);
}
}
Também é possível remover strings duplicadas.
using System;
using System.Linq; // <-- Não esquecer de importar a classe Linq
public class Program
{
public static void Main()
{
string[] animais = { "Gato", "Macaco", "Gato", "Papagaio", "Gato", "Cachorro" };
string[] retiraDuplicados = animais.Distinct().ToArray();
Console.WriteLine("\n\nNova Array com duplicados removidos:");
Array.ForEach(retiraDuplicados, v => Console.WriteLine(v));
/* OBS: o uso do foreach() não funciona bem aqui pois ele lida apenas com inteiros,
por se tratar de String, podemos usaro Array.ForEach() no lugar */
}
}
Qualquer dúvida, deixe um comentário!