¿Puede crear un simple 'EqualityComparer <T>' usando una expresión lambda

IMPORTANTE: ESTO ESNO ES UN LINQ-TO-SQL PREGUNTA. Esto es LINQ to objects.

Pregunta corta:

Hay una manera simple en LINQ para que los objetos obtengan una lista distinta de objetos de una lista basada en una propiedad clave en los objetos.

Pregunta larga:

Estoy tratando de hacer unDistinct() operación en una lista deobjeto que tienen una clave como una de sus propiedades.

class GalleryImage {
   public int Key { get;set; }
   public string Caption { get;set; }
   public string Filename { get; set; }
   public string[] Tags {g et; set; }
}

Tengo una lista deGallery objetos que contienenGalleryImage[].

Debido a la forma en que funciona el servicio web [sic] tengo duplicados de laGalleryImage objeto. pensé que sería una cuestión simple usarDistinct() para obtener una lista distinta.

Esta es la consulta LINQ que quiero usar:

var allImages = Galleries.SelectMany(x => x.Images);
var distinctImages = allImages.Distinct<GalleryImage>(new 
                     EqualityComparer<GalleryImage>((a, b) => a.id == b.id));

El problema es eseEqualityComparer es una clase abstracta.

No quiero:

implement IEquatable enGalleryImage porque se generatiene que escribir una clase separada para implementarIEqualityComparer como mostrado aquí

¿Existe una implementación concreta deEqualityComparer en algún lugar que me estoy perdiendo?

Pensé que habría una manera fácil de obtener objetos 'distintos' de un conjunto basado en una clave.

Respuestas a la pregunta(8)

Su respuesta a la pregunta