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