我有个问题…我有三张桌子:gamegamelistplayergame表包含游戏,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/

10-10 22:56