【发布时间】:2021-03-03 14:29:20
【问题描述】:
我想使用 OR 语句与 LINQ 进行 JOIN。
这是我开始的 SQL 查询:
SELECT t.id
FROM Teams t
INNER JOIN Games g
ON (g.homeTeamId = t.id OR g.awayTeamId = t.id)
AND g.winningTeamId != 0
AND g.year = @year
GROUP BY t.id
我无法将该 ON 子句转换为 LINQ。这是我所在的位置:
var y = from t in db.Teams
join g in db.Games on t.ID equals g.AwayTeamID //missing HomeTeamID join
where g.WinningTeamID != 0
&& g.Year == year
group t by t.ID into grouping
select grouping;
我想我可以使用:
join g in db.Games on 1 equals 1
where (t.ID == g.HomeTeamID || t.ID == g.AwayTeamID)
这可行,但似乎有点 hacky。有没有更好的办法?
【问题讨论】:
-
当然,两次加入团队更有意义,一次用于主场,一次用于客场,否则您已经获取了相关的数据,即
hometeam-game-awayteam,并将其分离为两行(即game-hometeam,game-awayteam)..然后你必须开始搞乱运行一个分组来尝试重新组合在一起..
标签: c# linq-to-sql