Comment mettre en œuvre IEqualityComparer pour retourner des valeurs distinctes?

J'ai un L2E requête qui renvoie des données qui contient des objets en double. J'ai besoin de supprimer ces objets en double. En gros je doit supposer que si leurs noms sont les mêmes, les objets sont en double. J'ai essayé q.Distinct(), mais qui toujours retourné à dupliquer des objets. Alors j'ai essayé de mettre mon propre IEqualityComparer et en passant à la Distinct() méthode. La méthode a échoué avec le texte suivant:

LINQ to entities ne reconnaît pas la méthode
'Système.Linq.IQueryable1[DAL.MyDOClass]
Distinct[MyDOClass](System.Linq.IQueryable
1[DAL.MyDOClass],
Système.Les Collections.Génériques.IEqualityComparer`1[DAL.MyDOClass])'
méthode, et cette méthode ne peut pas être traduit dans un magasin d'expression.

Et ici est la mise en œuvre 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;
        }
    }

Alors, comment dois-je écrire mon propre IEqualityComparer correctement?