LINQ에서 데이터 세트 DBNULL 문제 / NULL 참조 예외
문제
다음 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 표에서"열의 '비고'값은 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)
어쩌면이 필드는 DB에서 NULL을 허용하지 않으며 기본값을 얻고 NULL 값을 처리하지 마십시오.
제휴하지 않습니다 StackOverflow