我有以下的皇宫查询,其结果总是在错误的时候我的"备注"栏中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)

也许这一领域不允许空中的数据库,得到默认的价值,并避免处理空值

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top