2016-09-16 6 views
1

私は小文字の検索を作成しようとすると、私はdocumentdbのIDだけでなく、含まれて、始まりと終わりで検索したいと思います。Azure DocumentDbで小文字を検索するにはどうすればよいですか?

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

私はこのエラーを得た:同上、キーは次のようにあなたのラムダ式を変更することができ、文字列型である場合

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

なぜ小文字ですか?大文字小文字を無視して2つの文字列を比較したいのですか? – unrealsoul007

+0

@ unrealsoul007はい、正しいです。 –

答えて

2

をチェックアウト、私はAzureのに調べることで、これを解決していますDocumentDbドキュメントhere。 比較のために次のコードを使用してください:

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

注:これはフルテーブルスキャンです。演奏のパフォーマンスが必要な場合は、小文字で保存されたフィールドを非正規化することをお勧めします。その後、そのフィールドをクエリに使用します。クエリはインデックスを使用する必要があります。 –

0

を:

真のセットはと比較
(e => String.Compare(e.Id, key, true) == 0) 

すべての大文字小文字を無視します。あなたのコメントを1として

+0

は、ブロックの戻り値の型の一部が暗黙的に代理変数の戻り値の型に変換できないため、ラムダ式を戻り値の型に変換できません。 –

+0

比較メソッドがint型でbool型ではないことを忘れています。更新された回答 –

-1

、あなただけのケースを無視して比較したい場合は、あなたが簡単に行うことができます。

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

サンプルコードhere

+1

"exceptionMessage": "メソッド '比較'はサポートされていません。\ r \ nActivityId:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"、 –

関連する問題