我有以下LINQ查询,当dtblDetail中的“备注”列为空时,总是会导致错误,即使我测试它是否为NULL。
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'中'Remark'列的值是DBNull。” 在为d.IsRemarkNull()添加测试之后,抛出了一个空引用异常。
你能帮我解决这个问题吗?
我已经检查了以下网站但除了我必须测试DBNULL之外没有找到任何有用的东西。但正如所说,这并不能解决我的问题。
答案 0 :(得分:2)
问题是整个'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)
};
答案 1 :(得分:0)
错误来自何处?是否有可能导致它的d.IsRemarkNull()?这种方法是什么样的?
也许:
DBNull.Value.Equals(d.Remark)
答案 2 :(得分:0)
也许这个字段在db中不允许null,为它获取默认值,并避免处理空值