我希望找到一种简单的方法来去除重复项,而不必实现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...
Where
子句 - 如果只有一个人有特定的姓名,那个人将拥有最大的年龄。 - Michael Bray