NULL 인 경우에도 테스트하더라도 dtblDetail의 "Remark"열이 null 일 때 항상 오류가 발생하는 다음 LINQ 쿼리가 있습니다.LINQ to Dataset DBNULL 문제/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 '에서 열'비 '의 값이 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
DBNull을 포함하는 첫 번째 값을 가져 오자마자 오류가 발생합니다. 그래서 varActiveAndUsedElementsWithDetails.First()가 그것을 생성 할 수 있습니다. d.IsRemarkNull() 메서드는 데이터 집합에서 자동으로 생성되고 System.Data.DataRow.IsNull() 메서드를 호출합니다. "return this.IsNull (this.tableDetails.RemarkColumn);" – Marc
나는 linq를 아직 SQL과 함께 사용하지 않았지만 null이 아니고 & DBNull을 별도로 다루었습니까? where 절을 추가하여 명시 적으로 행을 필터링하려고 했습니까? DBNull.Value.Equals (d.Remark)? – dmo
예, 별도로 처리되므로 d.Remark == null을 테스트 할 수 없습니다. 그러나 생성 된 method.IsRemarkNull() 정확히이 상황을 처리해야하지만 여기에 작동하지 않는 것 ... – Marc