Linq to sql left join需要额外的null检查

时间:2017-06-28 11:56:26

标签: c# linq linq-to-sql

下面的查询按预期工作,但只缺少一个功能。 DepartmentId字段可以为空,当迭代用户时我只想获得没有departmentId的用户

from document in _documentRepository.GetAll()
from documentShare in document.DocumentShares where documentShare.UserId == input.SharedUserId 

join sU in _userRepository.GetAll() 
on documentShare.UserId /* Additional null check should be here 
like documentShare.DepartmentId == null */  equals sU.Id into sharedUsersInfo

据我所知,我应该加入小组,但即使我尝试过,也无法得到我想要的结果。谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

使用此代码检查非空值。 希望这可以帮助 :) documentShare.DepartmentId.HasValue&& documentShare.DepartmentId.Value

答案 1 :(得分:0)

如果您可以尝试,请猜测一下(抱歉还不能发表评论):

... 在_userRepository.GetAll()中加入sU 在documentShare.UserId上等于sU.Id and documentShare.DepartmentId == null 进入sharedUsersInfo

答案 2 :(得分:0)

你不能简单地将附加约束添加到"其中"文件的条款是什么?

...
from documentShare in document.DocumentShares where documentShare.UserId == input.SharedUserId 
     && documentShare.DepartmentId == null
...