C# Tips – Verifique com eficiência se há duplicatas em uma coleção usando C#

Com que frequência em seu código você deve verificar se há valores duplicados em uma coleção? Existe uma maneira de tornar essa verificação mais simples.

Verificando duplicados

Crie um método de extensão que utilize os métodos HashSet e LINQ Any para realizar a verificação.

Any entrará em “curto-circuito” e retornará do método assim que uma duplicata for encontrada, ou avaliará toda a coleção quando não houver duplicatas.

Exemplo

using System;
using System.Collections.Generic;
using System.Linq;

namespace CSharpTips
{
    public static class ContainsDuplicatesTip
    {
        public static bool ContainsDuplicates<T>(this IEnumerable<T> enumerable)
        {
            HashSet<T> knownElements = new HashSet<T>();
            return enumerable.Any(element => !knownElements.Add(element));
        }

        public static void ContainsDuplicatesTest()
        {
            List<int> numbers = new List<int>() { 1, 2, 3, 3, 4, 5 };
            if (ContainsDuplicatesTip.ContainsDuplicates(numbers))
            {
                Console.WriteLine("Has Duplicates");
            }
        }
    }
}

Créditos

Autor: Milan Jovanović
LinkedIn: https://www.linkedin.com/in/milan-jovanovic/
Link Original: Efficiently check for duplicates in a collection
Tradução: Leandro Lisura

Leave a Reply

Your email address will not be published. Required fields are marked *