I've got a problem... I've three tables: game, gamelist, and player. The game table consists of games, the gamelist consists of all of the gamers who wish to play in a game title and also the player table consists of all of the gamers.

I've chose to make this query:

  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;

This question will get me all of the games a person has registered for... but how do you get all of the games he has not registered for? Any hints or ideas?

You can simple invert the join condition, that's choose the game products that aren't within the gameLists table.
However, since LINQ only supports equi-join, you will need to express it utilizing a cross join strained having a where clause:

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;

For those who have a listing of games you should check what games are for the reason that complete list that ain't excisting within the listing of games the player has registered for. By doing this you extract all games he has not registered for.