L'utilisation d'un délégué pour l'égalité comparer pour LINQ Distinct()

J'ai une LINQ Distinct() instruction qui utilise mon propre comparer, comme ceci:

class MyComparer<T> : IEqualityComparer<T> where T : MyType
{
    public bool Equals(T x, T y)
    {
        return x.Id.Equals(y.Id);
    }

    public int GetHashCode(T obj)
    {
        return obj.Id.GetHashCode();
    }
}

...

var distincts = bundle.GetAllThings.Distinct(new MyComparer<MySubType>());

C'est toute fine et dandy et fonctionne comme je veux. Par curiosité, j'ai besoin de définir ma propre Comparer, ou puis-je le remplacer par un délégué? J'ai pensé que je devrais être en mesure de faire quelque chose comme ceci:

var distincts = bundle.GetAllThings.Distinct((a,b) => a.Id == b.Id);

Mais cela ne veut pas compiler. Est-il une astuce?

  • Vous devriez avoir un ReferenceEquals les contrôles contre le nul sur x et y dans votre Equals mise en œuvre.
InformationsquelleAutor Aidan | 2011-01-05