我有以下LINQ查詢總是在dtblDetail中的「備註」列爲空時導致錯誤,即使我測試它是否爲NULL。LINQ到數據集DBNULL問題/空引用異常
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。但據說這並不能解決我的問題。
- http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/3d124f45-62ec-4006-a5b1-ddbb578c4e4d
- http://blogs.msdn.com/adonet/archive/2007/02/13/nulls-linq-to-datasets-part-3.aspx
- http://www.vbforums.com/showthread.php?t=506645
只要我取第一個包含DBNull的值,就會發生錯誤。所以varActiveAndUsedElementsWithDetails.First()可以產生它。方法d.IsRemarkNull()是在數據集上自動生成的,並調用System.Data.DataRow.IsNull()方法:「return this.IsNull(this.tableDetails.RemarkColumn);」 – Marc 2009-05-19 06:52:47
我還沒有使用linq與SQL尚未 - 但不是null和DBNull分開處理?你有沒有試過添加一個where子句來明確地過濾where行!DBNull.Value.Equals(d.Remark)? – dmo 2009-05-19 06:59:53