1

OData WebAPI とEnumerableQuery(私が呼び出したリスト) のクエリに問題があります.AsQueryable()。エンティティ セットがあり、Get メソッドを返すコントローラーがありますIQueryable。そのエンティティ セットをクエリし、この $filter を使用すると、

$filter=SomeStringProp eq 'SomeValue'

SomeStringProp文字と大文字小文字が等しいエンティティのみを取得'SomeValue'します。このような関数呼び出しであっても、すべての文字列に対して大文字と小文字を区別しない比較子を使用するように OData に強制したいと思います。

$filter=contains(SomeStringProp, 'apple')

SomeStringProp が と等しいエンティティを返すには、OData が必要です'APPLE''PineApple''AppleSauce'

いくつかの追加情報:

  • データベースはこれとは何の関係もありません。述べたように、コレクションはインメモリです
  • OData クエリで tolower() を使用することは単なる回避策であるため、問題の解決策にはなりません
4

1 に答える 1

0

あなたが求めていることは、Odata ではサポートされていません。

  • 大文字と小文字を区別しないための推奨される方法は、tolower (または toupper)を使用することです。

  • contains キーワードは既にodata v4の一部であり、Web API に実装されています。

それらの両方を組み合わせると、完了です:)

編集:サンプル WSで問題なく動作します。

于 2015-08-11T10:21:16.243 に答える