我在下面的结构中有一个实体列表。如何在一次通话中使用linq创建所有List<int>
和AwayTeamId
HomeTeamId
的明确列表?我知道我可以在HomeTeamId上选择很多并获得所有这些,但我也需要包含AwayTeamId。
class Game {
int AwayTeamId;
int HomeTeamId;
}
答案 0 :(得分:3)
这将有效:
var result = entityContext.ListOfGames
.Select(p=>new List<int>{p.AwayTeamId, p.HomeTeamId})
.SelectMany(p=>p).Distinct();
如果它是LINQ to ENTITY,您需要在ListOfGames之后调用.ToList()
,以使此解决方案正常工作
答案 1 :(得分:3)
Uriil的回答可能更短:
var result = games
.SelectMany(game => new[] { game.AwayTeamId, game.HomeTeamId })
.Distinct()
;
无需额外。为每个游戏记录选择和列出创建。
答案 2 :(得分:2)
假设您刚刚在所有团队ID(主页或离开)的平面列表之后,那么UNIONing两个SELECT怎么样?
var teamIds = games.Select(g => g.HomeTeamId).Union(games.Select(g => g.AwayTeamId));
[games
是上例中Game
个实体的列表