Pode criar um simples 'EqualityComparer <T>' usando uma expressão lambda

IMPORTANTE: ISTO É NÃO UM LINQ-TO-SQL PERGUNTA. Este é o LINQ to objects.

Questão curta:

Existe uma maneira simples no LINQ de objetos de obter uma lista distinta de objetos de uma lista com base em uma propriedade-chave nos objeto

Longa pergunta:

Estou tentando fazer umDistinct() operação em uma lista de objetos que possuem uma chave como uma de suas propriedade

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

Tenho uma lista deGallery objetos que contêmGalleryImage[].

Por causa da maneira como o serviço da web funciona [sic], tenho duplicatas doGalleryImage objeto. eu pensei que seria uma questão simples de usarDistinct() para obter uma lista distint

Esta é a consulta LINQ que eu quero usar:

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

O problema é queEqualityComparer é uma classe abstrata.

Não quero:

implement IEquatable emGalleryImage porque é gerado tem que escrever uma classe separada para implementarIEqualityComparer Como mostrado aqui

Existe uma implementação concreta deEqualityComparer em algum lugar que estou perdendo?

Eu pensaria que haveria uma maneira fácil de obter objetos 'distintos' de um conjunto com base em uma chav

questionAnswers(8)

yourAnswerToTheQuestion