gpt4 book ai didi

c# - 使用分组依据以删除重复项

转载 作者:行者123 更新时间:2023-11-30 13:38:19 25 4
gpt4 key购买 nike

我正在寻找一种简单的方法来删除重复项,而不必实现 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 接口(interface)。如果我可以使用 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...

最佳答案

people
.GroupBy(p => p.Name)
.Select(g => g.OrderByDescending(p => p.Age).First())

这将适用于不同的 Linq 供应商。如果这只是 Linq2Objects,并且速度很重要(通常不是),请考虑使用网络上找到的许多 MaxBy 扩展之一(这里是 Skeet 的)并替换

g.OrderByDescending(p => p.Age).First()

g.MaxBy(p => p.Age)

关于c# - 使用分组依据以删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com