我有个问题…我有三张桌子:game
,gamelist
和player
。game
表包含游戏,gamelist
包含要在游戏中玩的所有玩家,player
表包含所有玩家。
我提出了这个问题:
var query1 = from es in gr.games
join esh in gr.gameLists on es.id equals esh.gameID
where es.holdID == play.holdID && esh.playerID.HasValue && esh.playerID == personID
select es;
这个查询得到一个玩家注册的所有游戏…但我怎么才能得到他还没报名的比赛呢?有什么提示或想法吗?
最佳答案
您可以简单地反转联接条件,即选择不在game
表中的gameLists
项。
但是,由于linq只支持equi-join,因此必须使用用where
子句筛选的cross join来表示它:
var results = from es in gr.games
from esh in gr.gameLists
where es.id != esh.gameID &&
esh.playerID.HasValue && esh.playerID == personID
select es;
关于.net - 需要不在 table 上的那些,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8398263/