2010-01-22 5 views
0

우리는 URL 기반 필터를 구축하는 ADO.NET 데이터 서비스 &을 사용하고 있습니다. 예 :/Customers? filter = City eq 'London'전체 텍스트 검색 (FTS) 필드를 사용하여 ADO.NET 데이터를 필터링하는 방법?

이제 전체 텍스트 '태그'입력란을 필터링해야합니다. 희망 사항 :/Customers? filter = 'Friendly'와 같은 태그

문제 : ADO.NET에는 LIKE 연산자가 없습니다. ADO.NET은 FTS 을 좋아하지 않는 것 같습니다 (CSV를 통해 구문 분석하지 않기 때문에 일치하는 항목을 찾을 수 없습니다)

아이디어를 얻는 방법은 무엇입니까? THX

답변

1

ADO.NET Data Services는 "LIKE"종류의 연산자를 지원합니다. 이 같은

조회 :

http://localhost/EntitiesService.svc/CalEvents?$filter=indexof(Subject,'fO') ge 0 

http://localhost/EntitiesService.svc/CalEvents?$filter=substringof('fox',Subject) eq true 

또는 LINQ 버전 :

var result = _context.CalEvents.Where(ce => ce.Subject.Contains(searchTerm)) 

당신이 찾고있는 무엇을 아마 마십시오. 그들은 "LIKE"연산자로 SQL 쿼리를 생성하고 "%"를 검색 용어에 추가합니다. 그래서 그들은 "LIKE"연산자처럼 행동합니다.

"Contains"연산자가있는 FTS는 지원되지 않습니다. 확인할 시간이 없지만 오래 전에 본 것으로 생각합니다.

자세한 정보 : http://www.odata.org/developers/protocols/uri-conventions

0

본인은 ADO.NET 데이터 서비스 자체로 작업하지 않았지만 전체 텍스트 검색을 사용할 때 CONTAINS 연산자가 훨씬 강력하다는 것을 알았습니다. 임시 SQL 문자열 또는 저장된 proc.