NULLであるかどうかをテストしても、dtblDetailの "Remark"列がNULLの場合、常にエラーになる次のLINQクエリがあります。LINQ to Dataset 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()のテストを追加すると、null参照例外がスローされます。
これを手伝ってもらえますか?
私は既に以下のウェブサイトをチェックしていますが、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
: 次のコードは、問題を修正しました。 varActiveAndUsedElementsWithDetails.First()はそれを生成できます。メソッドd.IsRemarkNull()はデータセット上で自動生成され、System.Data.DataRow.IsNull()メソッドを呼び出します。 "return this.IsNull(this.tableDetails.RemarkColumn);" – Marc
私はSQLでlinqをまだ使用していませんが、nullではなく&DBNullを別々に扱いますか? !DBNull.Value.Equals(d.Remark)の行を明示的にフィルタリングするwhere節を追加しようとしましたか? – dmo
はい、それは別々に扱われるため、d.Remark == nullをテストできません。しかし、生成されたmethod.IsRemarkNull()はこの状況を正確に処理する必要がありますが、ここではうまくいきません。 – Marc