2010-03-25 5 views
2
var results = from formNumber in context.DetailTM 
    join c in context.ClaimPeriodTM on formNumber.ClaimPeriod equals c.Cid 
    where formNumber.FormNumber.StartsWith(fNumber) 
      && formNumber.RegistrationNumber != registrationNumber 
    select new { RegNo = formNumber.RegistrationNumber, 
      CP = c.ClaimPeriod, FormNo = formNumber.FormNumber }; 

.StartsWith의 AND CLAUSE가 작동하지 않습니다. == 연산자를 사용하면 쿼리가 올바르게 작동합니다. where 절에 괄호를 추가하려고 시도했지만 도움이되지 않았습니다. 어떤 아이디어가 빠졌는지. 미리 감사드립니다.LINQ 관련 문제 절

+0

무엇이 오류가 아닌가요? – Nix

+0

이고 오류가 아니면 formNumber 항목이 부적절하게 포함되거나 제외됩니까? 도움이되는 데이터가 충분하지 않습니다. –

+0

formNumber.RegistrationNumber! = registrationNumber 작동하지 않습니다. 즉 formNumber.RegistrationNumber! = 1234 쿼리에 1234가 표시되지 않지만 여전히 – Kris1511

답변

0

"& & 사실 == false"와 같은 매우 기본적인 것을 시도해보고 실패했는지 확인하십시오. 또한 순서를 반대로하십시오. 순서를 바꾸면 실패한 두 번째 절입니까?

StartsWith에는이 동작이 발생해야합니다. 여기에 뭔가가 있습니다. 실제 버그를 격리 할 때까지 요소를 잘라서 이동하십시오.

0

FormNumber의 데이터베이스 유형은 무엇입니까? char (varchar가 아닌) 인 경우 비교의 한면 또는 양쪽면을 다듬어야 할 수 있습니다.

where 
    formNumber.FormNumber.Trim().StartsWith(fNumber.Trim()) 
    && formNumber.RegistrationNumber != registrationNumber 
0

jrummells 답변과 동일하지만 추가 의견을 대상으로합니다.

formNumber.RegistrationNumber! =

registrationNumber

여기에 데이터베이스 유형을 확인합니다. 고정 길이 (char 또는 nchar) 인 경우 트리밍을 일부 수행해야 할 수 있습니다.