【发布时间】:2020-07-20 18:04:34
【问题描述】:
我进行了一些连接以访问字段IsVacancyActive。
当我写条件s.IsVacancyActive == null 时,我得到了几行,其中有一个不应该存在。
如果我写s.IsVacancyActive != null,那么我会得到另一个行集合,包括我在之前条件下拥有的那一行。怎么会这样?它如何同时具有null 和not null 两个值?
附:我使用into 进行左连接
var data = (from c in db.Table1
join cm in db.Table2 on c.CandidateId equals cm.CandidateId into var1 from cm in var1.DefaultIfEmpty()
join lp in db.Table3 on c.KotelPositionId equals lp.PositionId into var2 from lp in var2.DefaultIfEmpty()
join pg in db.Table4 on lp.PositionId equals pg.PositionId into var3 from pg in var3.DefaultIfEmpty()
join lpt in db.Table5 on pg.LinkPositionGradeId equals lpt.LinkPositionGradeId into var4 from lpt in var4.DefaultIfEmpty()
join s in db.Table6 on lpt.LinkPositionTeamId equals s.LinkPositionTeamId into var5 from s in var5.DefaultIfEmpty()
join cv in db.Table7 on s.StaffId equals cv.VacancyId into var6 from cv in var6.DefaultIfEmpty()
join cvac in db.Table8 on c.CandidateId equals cvac.CandidateId into var7 from cvac in var7.DefaultIfEmpty()
where s.IsVacancyActive == null// Error
select new
{
c
}).Distinct()
.ToList();
【问题讨论】:
-
提示:
IS NULL。IS NOT NULL. -
最好使用
s.IsVacancyActive is null。但这取决于 SQL Server 中激活的兼容性向量。 -
@GordonLinoff 这是 Linq 查询语言,没有
is null或is not null。 -
与你的问题无关,因为你没有发布任何有用的东西来追踪你的问题,你绝对不需要做
new { c },如果你想要的话,只需返回c。我希望不是这样,因为返回那个怪物的结果会阻塞你的网络并杀死垃圾收集器。 -
is null给我一个错误“表达式树可能不包含 'is' 模式匹配运算符。”