Quiero hacer un JOIN con LINQ usando una instrucción OR.LINQ join with OR
Ésta es la consulta SQL que estoy empezando con:
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
Tengo problemas para la conversión de dicha cláusula ON a LINQ. Aquí es donde estoy en:
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;
Creo que podría utilizar:
join g in db.Games on 1 equals 1
where (t.ID == g.HomeTeamID || t.ID == g.AwayTeamID)
y esto funciona, pero parece un poco parece hacky. ¿Hay una mejor manera?
Definitivamente quiero usar || pero esperaba poder ponerlo en el JOIN. No lo he ejecutado aún para probar cuál es la salida sql, pero lo tengo compilando con el 1 igual a 1 en la unión y mi declaración OR hacia abajo en la cláusula where. – AndyMcKenna