2016-09-16 2 views
1

documentdb의 ID를 검색하고 싶습니다. 포함하고, 시작하며 끝은 있지만, 소문자 검색을 만들려고 할 때.Azure DocumentDb에서 어떻게 소문자를 검색 할 수 있습니까?

(e => String.Compare(e.Id, key, true) == 0) 

진정한 세트는 비교할 경우 : 아이디와 키가 String 형의 경우 다음과 같이

"exceptionMessage": "Method 'ToLowerInvariant' is not supported.\r\nActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx", 
+0

왜 소문자입니까? 대소 문자를 무시하면서 두 문자열을 비교하기를 원하십니까? – unrealsoul007

+0

@ unrealsoul007 예, 맞습니다. –

답변

2

샘플 코드를 DocumentDb 설명서 here. 비교를 위해 다음 코드를 사용하십시오.

e => e.Id.ToLower() == key.ToLower() 
+4

참고 이것은 전체 테이블 검색입니다. 프로덕션 성능을 준비해야하는 경우 소문자로 저장된 추가 필드를 비정규 화하는 것이 좋습니다. 그런 다음 해당 필드를 사용하여 쿼리를 작성한 다음 인덱스를 사용해야합니다. –

0

, 당신은 당신의 람다 식을 변경할 수 있습니다 :

await this.noSqlDataContext.GetDocumentsAsync<Index>(e => e.Id.ToLowerInvariant().Equals(key.ToLowerInvariant())); 

나는이 오류가 발생했습니다 모든 대소 문자를 무시하십시오. 당신은 그냥 케이스를 무시하고 비교하려는 경우 귀하의 의견으로 당

+0

은 람다 식을 반환 형식을 대리자로 변환 할 수 없습니다. 블록의 일부 반환 형식이 대리자 반환 형식으로 암시 적으로 변환되지 않기 때문입니다. –

+0

비교 방법이 int가 아닌 bool을 반환하는 것을 잊어 버렸습니다. 업데이트 된 답변 –

-1

, 당신은 간단하게 수행 할 수 있습니다

(e => string.Compare(e.Id, key, StringComparison.OrdinalIgnoreCase) == 0) 

체크 아웃 나는 푸른로보고이 문제를 해결 한 here

+1

"exceptionMessage": "메서드 '비교'가 지원되지 않습니다. \ r \ nActivityId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx", –