Cómo usar IEqualityComparer

Tengo algunas campanas en mi base de datos con el mismo número. Quiero obtenerlos todos sin duplicación. ¡Entonces creo una clase de comparación para hacer este trabajo, pero la ejecución de la función hace un gran retraso desde la función sin distinción, de 0.6 segundos a 3.2 segundos!

¿Lo estoy haciendo bien o tengo que usar otro método?

       reg.AddRange((from a in this.dataContext.reglements
                     join b in this.dataContext.Clients on a.Id_client equals b.Id
                     where a.date_v <= datefin && a.date_v >= datedeb
                     where a.Id_client == b.Id
                     orderby a.date_v descending 
                     select new Class_reglement
                     {
                         nom = b.Nom,
                         code = b.code,
                         Numf = a.Numf,
                     }).AsEnumerable().Distinct(new Compare()).ToList());


    class Compare : IEqualityComparer<Class_reglement>
    {
        public bool Equals(Class_reglement x, Class_reglement y)
        {
            if (x.Numf == y.Numf)
            {
                return true;
            }
            else { return false; }
        }
        public int GetHashCode(Class_reglement codeh)
        {
            return 0;
        }

    }

Respuestas a la pregunta(6)

Su respuesta a la pregunta