2012-02-19 5 views
1

LINQ 쿼리를 사용하여 작성했거나 작동하지 않았지만 작동하지 않는 것 같습니다.LINQ OR 연산자가 결과를 제공하지 않습니다.

문자열 값을 전달하는 중 내 결과를 얻고 싶습니다.

var userDetails = context.tbl_members.Where 
       (
        d => d.Mobile == value 
        || 
        d.MemberId == Int32.Parse(value) 
       ).SingleOrDefault(); 

은하지 내가 쿼리를 분할하는 경우 다른 사람이 MEMBERID

와 모바일 아니,하지만 경우 작업을 넣으면 작업에만 이동에는 그 실행 벌금을 유지하지 않습니다.

var userDetails = context.tbl_members.Where(d => d.Mobile == value).SingleOrDefault(); 

내가

감사 모크 샤어

당신이 SQL로 엔티티 또는 Linq는 Linq에를 사용하는 것 같습니다
+4

"작동하지 않음"을 정의하십시오 - 예외가 발생합니까? 원하는 결과를 반환하지 않습니까? 뭐? 또한 ** 정확한 ** 데이터베이스 데이터 유형은 무엇입니까? "char (20)"은 "nvarchar (20)"과 매우 다르게 동작합니다 (예 : –

답변

5
var userDetails = context.tbl_members 
         .Where(d => d.Mobile == value || 
            d.MemberId == Int32.Parse(value)) 
         .SingleOrDefault(); 

을 함께 잘못했는지 또는 조건이 무엇인지 확인하시기 바랍니다. Int32.Parse() 그 맥락에서 지원되지 않습니다 - 당신의 쿼리하기 전에 숫자 변환을 수행 헬프 brokenGlass에 대한

int numValue = Int32.Parse(value); 
var userDetails = context.tbl_members 
         .Where(d => d.Mobile == value || d.MemberId == numValue) 
         .SingleOrDefault(); 
+0

). 도움을 주셔서 감사하지만 여전히 작동하지 않습니다. – Moksha

0

덕분에,

오류이었다 내가의 문자열을 전달되면서 int로 문자열에서 변환에 10 자리 숫자로 변환되지 않았습니다.

값이 Int32에서 너무 크거나 작습니다.

감사합니다.

관련 문제