2009-06-13 6 views
39

LINQ to Entities를 사용하여 검색 페이지를 작성하려고하지만 다음 코드는 l.t.e에 대한 런타임 오류를 제공합니다. 'Boolean StartsWith()를 인식하지 못합니다. 코드는 잘 컴파일됩니다. StartsWith를 저장 프로 시저로 필터링하는 것보다이 문제를 어떻게 해결할 수 있습니까?LINQ to Entities 및 String.StartsWith와의 문제

return from dp in dents.DirectoryPersonEntrySet 
      where 
       ((dp.LastName.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) || 
       (dp.Department.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) || 
       dp.Extension.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) 
      select dp; 
+0

'다음 코드'를 게시 할 수 있습니까? 아니면 주제 전체 코드입니까? 당신은 String을 의미합니다 .Starts 부울 대신에 .StartsWith? –

+0

@Rutger, 감사합니다. 너무 빨리 보내고 코드를 잊어 버렸습니다. 나는 또한 서명을 고쳤다. – ProfK

+0

적어도 6 개의 괄호가 초과되었습니다. 우리는 여전히 함수 프로토 타입과 클래스 정의가 누락되었습니다. – em70

답변

77

EF가 StringComparison 매개 변수를 사용하는 StartsWith의 오버로드를 지원하지 않는다고 추측합니다. searchTerm는 소문자로되어 있는지 확인 후

dp.LastName.ToLower().StartsWith(searchTerm) 

과 :

dp.LastName.StartsWith(searchTerm) 

또는 :

StartsWithEndsWith가 포함되어 있습니다, 그래서 아마 당신이 시도 할 수 있습니다 지원해야 .

+2

Dead right, thang이 전체 문자열 옵션으로 EF를 던졌습니다. – ProfK

+0

부탁드립니다. –

+1

올바르게 추측되었지만 SQL로 변환 할 때 대소 문자를 구분하지 않도록주의하십시오. – marsze