【发布时间】:2013-07-09 18:57:13
【问题描述】:
我正在寻找一种简单的方法来删除重复项,而无需实现 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子句 - 如果只有一个人具有特定姓名,则该人的年龄最大。
标签: c# linq collections duplicates