我想要做一个可以加入一个可能的空值的连接。Linq2Sql,加入可能的空字段
from data in Data
join d1 in Data on new { a = data.pId, b = language } equals new { a = d1.pId, b = d1.language } into j1
from dta1 in j1.DefaultIfEmpty()
join d2 in Data on new { a = data.pId, b = fallback} equals new { a = d2.pId, b = d2.language } into j2
from dta2 in j1.DefaultIfEmpty()
where ((int?)dta1.id ?? dta2.id) == data.Id
select data;
这里的问题是,PID可以为空,如果是,连接不匹配,因为它比较
data.pId = null
,而不是
data.pId is null
在正常where子句我可以做object.Equals(data.pId,d1.pId),它会做一个空检查,但我怎么能在连接中做到这一点?
这个查询试图完成什么? – diceguyd30 2010-11-12 15:19:05
在这种特定情况下,它正在对数据表上的语言进行回退,因此可能有多种语言的数据,并且应该按照某种顺序回退。这是隔离问题的简化版本。 – Runeborg 2010-11-12 15:24:10