Linq C#:整数dbnull值如何检查?
我必须将此查询sql转换为linq:Linq C#:整数dbnull值如何检查?,c#,linq,dbnull,C#,Linq,Dbnull,我必须将此查询sql转换为linq: SELECT DISTINCT COUNT(tab1.IdUtente) AS NumClientiSenzaAccessi FROM tab1 LEFT OUTER JOIN tab2 ON tab1.IdUtente = tab2.IdAttivazione WHERE (tab1.Demo = 0) AND (tab1.idRivenditore = 0) AND (tab1.IdGruppo <> 29) AND (tab1.IdGr
SELECT DISTINCT COUNT(tab1.IdUtente) AS NumClientiSenzaAccessi
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.IdUtente = tab2.IdAttivazione
WHERE (tab1.Demo = 0) AND (tab1.idRivenditore = 0) AND (tab1.IdGruppo <> 29) AND (tab1.IdGruppo <> 130) AND (tab1.IdGruppo <> 117) AND (tab2.IdAttivazione IS NULL)
但它总是返回0,而不是其他值!!!如何与
c.IdAttivazione
的DBNull
值进行比较,其类型是可为null的整数(int?
)?如果IdAttiviazone
是可为null的
&& c.IdAttivaZone == null
或
取决于linq to SQL查询提供程序的工作情况。您需要在联接上使用进入,然后从中选择并使用DefaultIfEmpty()
,以便它可以执行左联接,并保留从左到右未联接的所有记录
var numClienti = (from u in contestoDB.tab1
join c in contestoDB.tab2 on u.IdUtente equals c.IdAttivazione into uc
from ucc in uc.DefaultIfEmpty()
where u.Demo == demo && u.idRivenditore == 0 && u.IdGruppo != 29 && u.IdGruppo != 130 && u.IdGruppo != 117 && (ucc.IdAttivazione.ToString() == null)
select u.IdUtente
).Distinct().Count();
(c.IdAttivazione.ToString()==null)=>(ucc.IdAttivazione.ToString()==null)@MikeVinyl的可能重复项对不起,我不明白?你在问我一个问题吗?
&& c.IdAttivaZone.HasValue
var numClienti = (from u in contestoDB.tab1
join c in contestoDB.tab2 on u.IdUtente equals c.IdAttivazione into uc
from ucc in uc.DefaultIfEmpty()
where u.Demo == demo && u.idRivenditore == 0 && u.IdGruppo != 29 && u.IdGruppo != 130 && u.IdGruppo != 117 && (ucc.IdAttivazione.ToString() == null)
select u.IdUtente
).Distinct().Count();