合并 List 中实体的两个属性并使用 Linq 将其展平

Mik*_*ynn 2 .net c# linq asp.net flatten

我在下面的这个结构中有一个实体列表。如何在一次调用中使用 linq创建List<int>所有AwayTeamId和的不同列表HomeTeamId?我知道我可以在 HomeTeamId 上选择多个并获取所有这些,但我还需要包含 AwayTeamId。

class Game {

   int AwayTeamId;
   int HomeTeamId;

}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ine 6

假设您正在寻找所有球队 ID(主场或客场)的平面列表,那么将两个 SELECT 联合起来怎么样?

var teamIds = games.Select(g => g.HomeTeamId).Union(games.Select(g => g.AwayTeamId));
Run Code Online (Sandbox Code Playgroud)

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


Sta*_*tan 6

Uriil 的回答可能更短:

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

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