题
我有以下的皇宫查询,其结果总是在错误的时候我的"备注"栏中dtblDetail是空的,即使我测试,如果它是空。
var varActiveAndUsedElementsWithDetails =
from e in dtblElements
join d in dtblDetails on e.PK equals d.FK into set
from d in set.DefaultIfEmpty()
where (e.ElementActive == true)
select new
{
ElementPK = e.PK,
Remark = d.IsRemarkNull() ? null : d.Remark
};
错误消息是:"值列'话'表'dtblDetails'是DBNull." 之后添加的试验d。IsRemarkNull()空引用的例外是抛出。
你可以帮我这个?
我已经检查过下面的网站,但没有找到任何有用的其他比那我来测试DBNULL.但正如所述,这并不解决我的问题。
解决方案
问题是,整个"d"项目是空的。所以叫'd。IsRemarkNull()'导致在零基准的例外。以下代码的固定的问题:
var varActiveAndUsedElementsWithDetails =
from e in dtblElements
join d in dtblDetails on e.PK equals d.FK into set
from d in set.DefaultIfEmpty()
where (e.ElementActive == true)
select new
{
ElementPK = e.PK,
Remark = d == null? null : (d.IsRemarkNull() ? null : d.Remark)
};
其他提示
哪里是错误?它是可能的,这是d。IsRemarkNull()引起吗?这是什么方法看起来像什么?
也许是:
DBNull.Value.Equals(d.Remark)
也许这一领域不允许空中的数据库,得到默认的价值,并避免处理空值
不隶属于 StackOverflow