ВАЖНО: ВОПРОС: НЕ ЛИЦО-SQL. Это LINQ для объектов.
Короткий вопрос:
Есть ли простой способ в LINQ для объектов получить отдельный список объектов из списка на основе свойства ключа для объектов.
Длинный вопрос:
Я пытаюсь сделать операцию Distinct()
в списке объектов, у которых есть ключ как один из их свойств.
class GalleryImage {
public int Key { get;set; }
public string Caption { get;set; }
public string Filename { get; set; }
public string[] Tags {g et; set; }
}
У меня есть список объектов Gallery
, содержащих GalleryImage[]
.
Из-за того, как работает веб-сервис [sic], у меня есть дубликаты
GalleryImage
объект. я подумал, что было бы просто использовать Distinct()
для получения отдельного списка.
Это запрос LINQ, который я хочу использовать:
var allImages = Galleries.SelectMany(x => x.Images);
var distinctImages = allImages.Distinct<GalleryImage>(new
EqualityComparer<GalleryImage>((a, b) => a.id == b.id));
Проблема заключается в том, что EqualityComparer
является абстрактным классом.
Я не хочу:
- реализовать IEquatable на
GalleryImage
, потому что он сгенерирован - нужно написать отдельный класс для реализации
IEqualityComparer
как показанный здесь
Есть ли конкретная реализация EqualityComparer
где-то, что мне не хватает?
Я бы подумал, что будет простой способ получить "разные" объекты из набора, основанного на ключе.