입력 레코드가 '겹치는'날짜 범위가되는지를 결정하기 위해 먼저 데이터베이스를 쿼리해야하는 문제에 대해 작업하고 있습니다. SQL에서 상당히 간단한 작업이지만 Linq에서 작동하도록 할 수는 없습니다. 다음은 관련 비즈니스 규칙입니다.Null Linq의 긴 데이터 유형 확인
Id1 == Id1이고 datespans가 겹치면 이 충돌하는 레코드를 가져 오십시오. Id2 == Id2이고 datespans가 겹치는 경우 다시 레코드를 가져 오십시오 (s)) Id1 == null이고 Id2 == null이고 datespans가 겹치는 경우 충돌하는 레코드를 다시 가져 오십시오.
resultingOverlaps = (from overlapSpans in entities.ENTITIES
where overlapSpans.CNTRCT_TYP_ID == contractId
where (overlapSpans.ID1 == Id1 || overlapSpans.Id2 == Id2 ||
(overlapSpans.ID1 == null && overlapSpans.Id2 == null))
where (
(overlapSpans.EFF_DT < effDate && overlapSpans.END_DT >= effDate)
|| (overlapSpans.EFF_DT > effDate && overlapSpans.EFF_DT <= endDate)
|| (overlapSpans.EFF_DT == effDate)
)
select overlapSpans).ToList();
문제는 Id1에와 ID2는 데이터 유형 길이 있다는 것입니다?, 따라서 이러한 방식으로 널 (null)을 검사 할 수없는, 또는 다른 방식으로 내가 시도했다가 다음과 같이
내 LINQ 쿼리입니다 지금까지. ('.HasValue'등을 사용하여 0에 대한 테스트)
긴 데이터 유형을 갖는 null 값은 어떻게 확인합니까?
nullable 유형에 대해 'HasValue'를 살펴 보셨습니까? http://msdn.microsoft.com/en-us/library/sksw8094(v=vs.110).aspx –
그래, 내 게시물은 내가 이것을 시도했다. – mmelear
나의 실수는, 나는 그 비트를 놓쳤다. 코드가 컴파일되고 실행되거나 빌드되지 않습니까? –