Avatar ·

Como usar Distinct() com expressão lambda para filtrar duplicatas por propriedade do objeto?

Olá a todos! Sou novo em C# e encontrei um problema ao trabalhar com coleções. Tenho uma lista de objetos da classe Person:

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

Preencho a lista com dados e nela aparecem duplicatas pelo campo Name. Preciso obter apenas nomes únicos, mas mantendo os objetos inteiros (ou pelo menos selecionar um dos duplicados).

Sei que existe o método Distinct(), mas ele funciona apenas para tipos primitivos ou se sobrescrevermos Equals e GetHashCode na classe. E não quero modificar a classe Person — ela é usada em outros lugares, e a comparação por todos os campos não me serve.

Vi que no LINQ há uma sobrecarga Distinct(IEqualityComparer), mas escrever uma classe comparadora separada para cada caso parece muito complicado. É possível