2017-04-05 1 views
0

데이터베이스에서 처리되지 않은 파일을 수집하는 SQL 문을 만들었습니다. DicomDataType_LK 테이블을 사용하여 관심있는 결과로 결과를 제한합니다. 실행하면 두 가지 결과를 얻습니다.TSQL 쿼리를 LINQ로 변환

SELECT * FROM [Procedure].DicomData dicoms 
JOIN [Procedure].DicomDataType_LK dtype 
    ON dicoms.DicomDataTypeID = dtype.DicomDataTypeID 
WHERE dicoms.ProcedureID = '00000000-0000-0000-0000-000000000000' 
    AND dicoms.CreateDate > '3/27/2017' 
    AND (dtype.DicomDataType LIKE 'V Density' 
     OR dtype.DicomDataType LIKE 'Q Density' 
     OR dtype.DicomDataType LIKE 'i Density' 
     OR dtype.DicomDataType LIKE 'u Density') 

나는 이것을 LINQ to SQL로 번역했으나, 동일한 연결을 사용하면 결과가 0이된다.

  IQueryable<DicomData> rows = from dicoms in db.DicomDatas 
       join dtype in db.DicomDataType_LKs 
        on dicoms.DicomDataTypeID equals dtype.DicomDataTypeID 
       where dicoms.ProcedureID == Guid.Empty 
        && dicoms.CreateDate > fromTime 
        && (dtype.DicomDataType.Equals("V Density") 
        || dtype.DicomDataType.Equals("Q Density") 
        || dtype.DicomDataType.Equals("i Density") 
        || dtype.DicomDataType.Equals("u Density")) 
       select dicoms; 

나는 fromTime이 내 두 결과를 포함해야하는 값을 제공한다는 것을 확인했습니다. 누군가 내 번역에서 내가 뭘 잘못하고 있는지 알려주실 수 있습니까? 내가 무엇을 볼 수에서

+1

과 동일하지 않으며 AND dicoms.CreateDate> = '3/27/2017'은 (는) '&& dicoms.CreateDate> fromTime'과 동일하지 않습니다. '>'와 같지 않습니다. ... –

+1

'Guid.Empty'는 (예를 들어)'new Guid ("00000000-0000-0000-0000" -000000000000 ")'LINQ. 예를 들어 [이 질문] (http://stackoverflow.com/questions/358345/hanging-linq-query-with-guid-empty-in-the-where-expression)을 참조하십시오. 따라서 위의 새로운 Guid 구문으로 변환하여 작동하는지 확인하십시오. 나는 모든 0이 유효한 GUID라고 생각하지만, 빈 GUID는 그렇지 않습니다. –

+0

@SaniSinghHuttunen - 수정 해 주셔서 감사합니다. SQL에서 작성된 문은 LINQ 쿼리가 올바른지 테스트하기위한 것입니다. CreateDate는 일주일 전의 일이지만, 처리중인 항목은 오늘 이후이므로 작업해야합니다. – Tim

답변

1

:

AND dicoms.CreateDate >= '3/27/2017'&& dicoms.CreateDate > fromTime

즉 동일하지 않습니다 >=은 (는) >