2017-04-15 8 views
0

linq에서 이상한 문제가 있습니다. where 절에 bit datatype이라는 두 개의 열을 지정하려고 할 때마다 null을 반환합니다. 하지만 데이터가 내 테이블에 특정 요구 사항과 함께 존재한다는 것입니다.Linq에있는 boolean 데이터 유형이있는 where 절에서 두 조건을 확인할 때 List가 null입니다.

var data = (from PD in C.KYC_PERSONAL_DETAILS 
       join IMG in C.KYC_UPLOAD_DETAILS on PD.ACCOOUNT_NO equals IMG.ACCOOUNT_NO 
       where (PD.FILEFLAG == false) && (IMG.IsVerify == true) 
       select new 
       { 
       PD_ACCOUNT_NO = PD.ACCOOUNT_NO, 
       PD_NAME = PD.NAME, 
       IMG_Name = IMG.Name 
       }.ToList(); 
     int count = data.Count(); //Here it shows 0 even though data exists in table. 

SQL 쿼리의 형식으로 작성한 다음 작업하고 반환하는 경우 동일한 쿼리.

select * from KYC_PERSONAL_DETAILS, KYC_UPLOAD_DETAILS 
     where KYC_PERSONAL_DETAILS.FILEFLAG = false 
     AND KYC_UPLOAD_DETAILS.IS_VERIFY= true 

//Here it is returning a row. 
난 그냥 부울 데이터 유형 두 개의 열과에서 && 연산자를 지정하는 그게 가능한 알고 싶은

LINQ 여부 절? 그렇다면 길을 제안하십시오.

+0

확인하면 .. 이반이 잘 작동 비의 SQL DB에 &&을 사용했다고 주장하고 또한 내가 SQL 서버의 버그에 직면 할 수 있다는 가능성이 있기 때문에 * 않고 * 'where'와'select' 부분을 사용합니다. – dotNET

+0

그렇지 않으면 SQL 문 (부울 대신 문자열 값을 사용함)에서 분명히 알 수 있듯이 데이터 형식 문제 일 수 있습니다. – dotNET

+0

SQL에서 부울을 사용하는 경우에도 작동합니다. – Chirag

답변

0

시행 및 오류 실행 후 LINQ 쿼리를 작동시키는 방법을 찾았습니다. 나는 여전히 그 이유에 대해 알지 못하지만, 다음과 같은 방법으로 그것을한다면 지금 일하고있다. 나는 실제 문제와 이에 대한 논리에 대해 조사한 후에 나의 대답을 업데이트 할 것이다. 내가 부울 데이터 유형의 경우 동일한 쿼리를 작성하여

1

var data = (from PD in C.KYC_PERSONAL_DETAILS 
      join IMG in C.KYC_UPLOAD_DETAILS on PD.ACCOOUNT_NO equals IMG.ACCOOUNT_NO 
      where PD.FILEFLAG == false 
      where IMG.IsVerify == true 
      select new 
      { 
      PD_ACCOUNT_NO = PD.ACCOOUNT_NO, 
      PD_NAME = PD.NAME, 
      IMG_Name = IMG.Name 
      }.ToList(); 
    int count = data.Count(); //Here it shows 1 data that exists in table. 

2

var data = (from PD in C.KYC_PERSONAL_DETAILS 
      join IMG in C.KYC_UPLOAD_DETAILS on PD.ACCOOUNT_NO equals IMG.ACCOOUNT_NO 
      where (PD.FILEFLAG == false) & (IMG.IsVerify == true) 
      select new 
      { 
      PD_ACCOUNT_NO = PD.ACCOOUNT_NO, 
      PD_NAME = PD.NAME, 
      IMG_Name = IMG.Name 
      }.ToList(); 
    int count = data.Count(); //Here it shows 1 data that exists in table. 

과 같은 쿼리를 작성할 경우 작동

잘. 단락 회로 연산자를 사용하기 때문에 문제가 발생할 수 있다고 생각합니다.

그래서, 말 중 하나 대신 &&&를 사용하거나 boolean 데이터 유형이 열을 처리 할 때마다 잘 작동합니다 LINQ 쿼리에 두 where 를 사용하여. &&을 다른 데이터 유형으로 사용하는 것은 문제가 없지만 부울 값의 경우 문제가 발생할 수 있습니다. 의견 이반에 의해 명시된 바와 같이

보조 노트

으로 UPDATE 1

2 옵션을 사용하지만이 권장되지입니다. 내가 SQL SERVER 2008 R2을 사용하고 당신의 LINQ가 어떤 기록을 반환