ВАЖНО: ВОПРОС: НЕ ЛИЦО-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 где-то, что мне не хватает?
Я бы подумал, что будет простой способ получить "разные" объекты из набора, основанного на ключе.