我正在寻找一种简单的方法来删除重复项,而不必实现 IComparable 类,不必重写 GetHashCode 等。
我认为这可以通过 linq 来实现。我有课:
class Person
{
public string Name;
public ing Age;
}
我有一个大约 500 人的列表List<Person> someList = new List<Person()
现在我想删除同名的人,如果有重复,我想保留年龄较大的人。换句话说,如果我有清单:
Name----Age---
Tom, 24 |
Alicia, 22 |
Alicia, 12 |
我想结束:
Name----Age---
Tom, 24 |
Alicia, 22 |
我如何通过查询来做到这一点?我的列表没有那么长,所以我不想创建哈希集也不想实现 IComparable 接口。如果我可以使用 linq 查询来做到这一点,那就太好了。
我认为这可以通过 groupBy 扩展方法通过执行以下操作来完成:
var people = // the list of Person
person.GroupBy(x=>x.Name).Where(x=>x.Count()>1)
... // select the person that has the greatest age...