Нужны те, кто не в таблице - PullRequest
       3

Нужны те, кто не в таблице

2 голосов
/ 06 декабря 2011

У меня проблема ... У меня есть три таблицы: 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;

Этот запрос возвращает мне все игры, на которые подписан игрок ... но как мне получить все игры, на которые он не подписан?Есть намеки или идеи?

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Вы можете просто инвертировать условие соединения , то есть выбрать game элементы, которые не в таблице gameLists.
Однако, поскольку LINQ поддерживает только equi-join , вам придется выразить это с помощью cross join , отфильтрованного с помощью предложения where:

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;
0 голосов
/ 06 декабря 2011

Если у вас есть список всех игр, вы можете проверить, какие игры находятся в этом полном списке, которого нет в списке игр, на которые подписан игрок. Таким образом вы извлекаете все игры, на которые он не подписан.

...