合并列表中实体的两个属性并使用Linq将其平面化
本文关键字:属性 Linq 平面化 两个 实体 列表 合并 | 更新日期: 2023-09-27 18:08:24
我在下面这个结构中有一个实体列表。如何在一次调用中使用linq创建所有AwayTeamId
和HomeTeamId
的List<int>
的不同列表?我知道我可以在HomeTeamId上做一个select many并得到所有这些,但我还需要包含AwayTeamId。
class Game {
int AwayTeamId;
int HomeTeamId;
}
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()
,以使此解决方案有效