Paw*_*man 1 linq linq-to-entities
我有一个表GameVersion与FK(允许空值)到Game表.当我这样做:
GameVersion[] q = (from gv in db.GameVersion.Include("Game")
select gv).ToArray();
Run Code Online (Sandbox Code Playgroud)
它工作正常,在迭代GameVersion对象时,我可以在某些记录中看到对游戏的空引用(就像在数据库中一样),所以它就像左连接一样工作.
但是,当我稍微修改查询并添加按游戏名称搜索时
GameVersion[] q = (from gv in db.GameVersion.Include("Game")
where gv.Game.DisplayName.Contains("a")
select gv).ToArray();
Run Code Online (Sandbox Code Playgroud)
它突然表现得像内连接(不再选择空引用).我不太明白这种行为.为什么会发生这种情况,如何使查询起作用?我想选择所有的GameVersions,甚至是那些Game == null并在其中一个游戏列上应用条件的游戏.
好吧,如果没有游戏,就没有显示名称,所以它不能包含"a".如果你想也选择游戏版本那里没有比赛,你需要明确这样做.试试这个:
GameVersion[] q = (from gv in db.GameVersion.Include("Game")
where gv.Game == null || gv.Game.DisplayName.Contains("a")
select gv).ToArray();
Run Code Online (Sandbox Code Playgroud)