Linq C#:整数 dbnull 值我如何检查它?
Linq C# : Integer dbnull value how can I check it?
我必须将此查询转换为 linq sql:
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)
我已尝试执行此查询:
var numClienti = (from u in contestoDB.tab1
join c in contestoDB.tab2 on u.IdUtente equals c.IdAttivazione
where u.Demo == demo && u.idRivenditore == 0 && u.IdGruppo != 29 && u.IdGruppo != 130 && u.IdGruppo != 117 && (c.IdAttivazione.ToString() == null)
select u.IdUtente
).Count();
但它总是 returns 0 而不是其他值!!!如何与 c.IdAttivazione
的 DBNull
值进行比较并且其类型为可为空整数 (int?
)?
如果 IdAttiviazone
是 Nullable<Int32>
,您应该能够直接与 null 进行比较,或者使用 属性 HasValue
.
&& c.IdAttivaZone == null
或
&& c.IdAttivaZone.HasValue
取决于您的 linq to SQL 查询提供程序的工作情况。
您需要在联接中使用 into
,然后从中使用 select 并使用 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();
我必须将此查询转换为 linq sql:
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)
我已尝试执行此查询:
var numClienti = (from u in contestoDB.tab1
join c in contestoDB.tab2 on u.IdUtente equals c.IdAttivazione
where u.Demo == demo && u.idRivenditore == 0 && u.IdGruppo != 29 && u.IdGruppo != 130 && u.IdGruppo != 117 && (c.IdAttivazione.ToString() == null)
select u.IdUtente
).Count();
但它总是 returns 0 而不是其他值!!!如何与 c.IdAttivazione
的 DBNull
值进行比较并且其类型为可为空整数 (int?
)?
如果 IdAttiviazone
是 Nullable<Int32>
,您应该能够直接与 null 进行比较,或者使用 属性 HasValue
.
&& c.IdAttivaZone == null
或
&& c.IdAttivaZone.HasValue
取决于您的 linq to SQL 查询提供程序的工作情况。
您需要在联接中使用 into
,然后从中使用 select 并使用 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();