合并列表中实体的两个属性并使用Linq将其平面化

本文关键字:属性 Linq 平面化 两个 实体 列表 合并 | 更新日期: 2023-09-27 18:08:24

我在下面这个结构中有一个实体列表。如何在一次调用中使用linq创建所有AwayTeamIdHomeTeamIdList<int>的不同列表?我知道我可以在HomeTeamId上做一个select many并得到所有这些,但我还需要包含AwayTeamId。

class Game {
   int AwayTeamId;
   int HomeTeamId;
}

合并列表中实体的两个属性并使用Linq将其平面化

uril的回答可能更短:

var result = games
    .SelectMany(game => new[] { game.AwayTeamId, game.HomeTeamId })
    .Distinct()
;

不需要额外的。select并列出每个游戏记录的创建

假设您只是在寻找所有球队id(主场或客场)的列表,那么将两个select合并如何?

var teamIds = games.Select(g => g.HomeTeamId).Union(games.Select(g => g.AwayTeamId));

[games是上面示例中Game实体的列表]

可以:

var result = entityContext.ListOfGames
      .Select(p=>new List<int>{p.AwayTeamId, p.HomeTeamId})
      .SelectMany(p=>p).Distinct();

如果它是LINQ到ENTITY,你需要在ListOfGames之后调用.ToList(),以使此解决方案有效