You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Person对象列表中提取每个TeamNumber对应的首个成员

提取每个团队首个成员的实现方法

需求很明确:从给定的Person对象列表中,按TeamNumber分组后提取每组的第一个元素,生成仅包含各团队首个成员的精简列表。

先确认Person类定义

public class Person
{
    public int TeamNumber { get; set; }
    public string Name { get; set; }
}

原始完整列表示例

List<Person> list = new List<Person>()
{
    new Person(){TeamNumber = 1, Name = "Peter"},
    new Person(){TeamNumber = 1, Name = "Klaus"},
    new Person(){TeamNumber = 1, Name = "Maria"},
    new Person(){TeamNumber = 1, Name = "Gerda"},
    new Person(){TeamNumber = 2, Name = "Ralf"},
    new Person(){TeamNumber = 2, Name = "Oskar"},
    new Person(){TeamNumber = 2, Name = "Anna"},
    new Person(){TeamNumber = 3, Name = "Hannah"},
    new Person(){TeamNumber = 3, Name = "Susi"},
    new Person(){TeamNumber = 4, Name = "Ida"}
};

实现方法

方法一:使用GroupBy + First(兼容所有.NET版本)

通过GroupBy按TeamNumber分组,再对每个分组取第一个元素:

var firstMembersByTeam = list
    .GroupBy(person => person.TeamNumber)
    .Select(group => group.First())
    .ToList();

方法二:使用DistinctBy(.NET 6及以上版本可用)

.NET 6新增的DistinctBy方法可以直接按指定键去重,保留首次出现的元素,代码更简洁:

var firstMembersByTeam = list.DistinctBy(person => person.TeamNumber).ToList();

验证结果

遍历输出结果,会得到你期望的精简列表:

  • TeamNumber = 1, Name = "Peter"
  • TeamNumber = 2, Name = "Ralf"
  • TeamNumber = 3, Name = "Hannah"
  • TeamNumber = 4, Name = "Ida"

内容的提问来源于stack exchange,提问作者Frank Mehlhop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:55:18