Avatar ·

¿Cómo usar Distinct() con una expresión lambda para filtrar duplicados por una propiedad del objeto?

¡Hola a todos! Soy nuevo en C# y me encontré con un problema al trabajar con colecciones. Tengo una lista de objetos de la clase Person:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

Lleno la lista con datos y aparecen duplicados por el campo Name. Necesito obtener solo nombres únicos, pero manteniendo los objetos completos (o al menos seleccionar uno de los duplicados).

Sé que existe el método Distinct(), pero solo funciona para tipos primitivos o si se sobrescriben Equals y GetHashCode en la clase. Y no quiero modificar la clase Person — se usa en otros lugares y la comparación por todos los campos no me sirve.

He visto que en LINQ hay una sobrecarga Distinct(IEqualityComparer), pero escribir una clase comparadora separada para cada caso parece demasiado engorroso. ¿Se puede