LINQ для сущностей - оставлено соединение с условием - PullRequest
1 голос
/ 28 июля 2010

У меня есть таблица GameVersion с FK (допускает нулевые значения) к игровому столу.Когда я делаю это:

    GameVersion[] q = (from gv in db.GameVersion.Include("Game")
                       select gv).ToArray();

Все работает нормально, итерируя объекты GameVersion, я вижу пустые ссылки на Game в некоторых записях (как в базе данных), поэтому он работает как левое соединение.

Однако, когда я немного модифицирую запрос и добавляю поиск по названию игры

    GameVersion[] q = (from gv in db.GameVersion.Include("Game")
                       where gv.Game.DisplayName.Contains("a")
                       select gv).ToArray();

Он внезапно ведет себя как внутреннее соединение (больше не выбирает нулевые ссылки).Я не совсем понимаю это поведение.Почему это происходит и как я могу заставить запрос работать?Я хочу выбрать все версии GameVersions, даже те, которые имеют Game == null plus, и применить условие к одному из столбцов Game.

1 Ответ

6 голосов
/ 28 июля 2010

Ну, если нет игры, не может быть отображаемого имени, поэтому оно не может содержать «а».Если вы хотите также выбрать версии игры, в которых нет игры, вам нужно сделать это явно.Попробуйте это:

GameVersion[] q = (from gv in db.GameVersion.Include("Game")
                   where gv.Game == null || gv.Game.DisplayName.Contains("a")
                   select gv).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...