Cómo implementar IEqualityComparer para devolver valores distintos?

Tengo una consulta L2E que devuelve algunos datos que contienen objetos duplicados. Necesito eliminar esos objetos duplicados. Básicamente, debería suponer que si sus ID son iguales, entonces los objetos están duplicados. He intentadoq.Distinct(), pero eso todavía devolvió objetos duplicados. Luego intenté implementar mi propio IEqualityComparer y pasarlo aDistinct() método. El método falló con el siguiente texto:

LINQ to Entities no reconoce el método 'System.Linq.IQueryable1[DAL.MyDOClass] Distinct[MyDOClass](System.Linq.IQueryable 1 [DAL.MyDOClass], System.Collections.Generic.IEqualityComparer`1 [DAL.MyDOClass]) ', y este método no se puede traducir a una expresión de tienda.

Y aquí está la implementación de EqualityComparer:

  internal class MyDOClassComparer: EqualityComparer<MyDOClass>
    {
        public override bool Equals(MyDOClass x, MyDOClass y)
        {
            return x.Id == y.Id;
        }

        public override int GetHashCode(MyDOClass obj)
        {
            return obj == null ? 0 : obj.Id;
        }
    }

Entonces, ¿cómo escribo mi propiaIEqualityComparer correctamente?

Respuestas a la pregunta(10)

Su respuesta a la pregunta