Avatar ·

如何使用带有lambda表达式的Distinct()按对象属性过滤重复项?

大家好!我是C#新手,在处理集合时遇到了问题。我有一个Person类的对象列表:

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

我用数据填充列表,其中出现了按Name字段重复的情况。我需要只获取唯一的名称,但同时保留完整的对象(或者至少从重复项中选择一个)。

我知道有Distinct()方法,但它只适用于原始类型,或者需要在类中重写Equals和GetHashCode。但我不想修改Person类——它在其他地方被使用,而且按所有字段进行比较不适合我。

我看到LINQ中有Distinct(IEqualityComparer)的重载,但为每种情况编写单独的comparer类似乎太繁琐了。是否可以