linq查询中的nullable int

时间:2016-08-18 16:06:55

标签: asp.net linq linq-to-sql

这里的理智检查......

这两个linq查询不应该返回相同的结果吗?

查询#1:

int stateId = 2;

var streets = from s in ctx.tblStreet
              where s.State_Id == stateId
              && s.ParentStreet_Id == (int?)null
              select s;

查询#2:

int stateId = 2;
int? parentStreetId = (int?)null;

var streets = from s in ctx.tblStreet
              where s.State_Id == stateId
              && s.ParentStreet_Id == parentStreetId
              select s;

======编辑==========

第一个linq查询产生我期望它的记录,而第二个linq查询没有。我希望他们两个都能得到相同的结果,但他们没有。

======编辑#2 ==========

tblStreet定义......

int State_Id not null

int ParentStreet_id null

======编辑#3 ==========

生成的sql对于两个查询是不同的,但我认为在这种情况下无关紧要,因为@ p1(parentStreetId)等于(int?)null。请注意,在下面的查询中,我删除了所有选择字段并用星号替换它们以缩短选择并只显示where子句。

查询#1:

SELECT * WHERE([t0]。[State_Id] = @ p0)AND([t0]。[ParentStreet_Id] IS NULL)

查询#2:

SELECT * WHERE([t0]。[State_Id] = @ p0)AND([t0]。[ParentStreet_Id] = @ p1)

0 个答案:

没有答案