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

如何用Linq过滤对象内嵌套的players列表,仅保留available状态球员?

使用LINQ过滤嵌套球员列表,仅保留可用状态球员

完全可以通过LINQ实现这个需求,核心思路是遍历每个球队,对其球员列表做过滤,保留状态为available的球员,同时保留原球队的名称信息。

第一步:定义对应实体类

首先需要在C#中定义匹配数据结构的类和枚举:

// 球员状态枚举
public enum PlayerStatus
{
    Available,
    Unavailable,
    Unknown
}

// 球员类
public class Player
{
    public string Name { get; set; }
    public PlayerStatus Status { get; set; }
}

// 球队类
public class Team
{
    public string TeamName { get; set; }
    public List<Player> Players { get; set; }
}

第二步:LINQ过滤实现

假设你已经有了List<Team> teams数据源,使用LINQ的Select和Where方法即可完成过滤:

// 生成过滤后的球队列表(创建新对象,不修改原数据)
var filteredTeams = teams.Select(team => new Team
{
    TeamName = team.TeamName,
    // 过滤当前球队中状态为Available的球员
    Players = team.Players.Where(player => player.Status == PlayerStatus.Available).ToList()
}).ToList();

如果需要直接修改原球队对象的球员列表(而非创建新对象),可以用遍历+赋值的方式:

foreach (var team in teams)
{
    team.Players = team.Players.Where(p => p.Status == PlayerStatus.Available).ToList();
}

效果验证

输入数据:

teams: [
  {
    "teamName": "Bayern",
    "players":[
      {
        "name": "Neuer",
        "status": "available"
      },
      {
        "name": "Muller",
        "status": "unavailable"
      },
      {
        "name": "Pavard",
        "status": "unknown"
      }
    ]
  },
  {
    "teamName": "Borrusia",
    "players":[
    {
        "name": "Haller",
        "status": "available"
      },
    {
        "name": "Modeste",
        "status": "unavailable"
      }
    ]
  }
]

过滤后输出结果:

teams: [
  {
    "teamName": "Bayern",
    "players":[
      {
        "name": "Neuer",
        "status": "available"
      }
    ]
  },
  {
    "teamName": "Borrusia",
    "players":[
    {
        "name": "Haller",
        "status": "available"
      }
    ]
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:40:23