1

たとえば、次のような OData クエリがあります。

  • /Suppliers?$filter=住所/都市 eq '都市'
  • /Suppliers?$filter=contains(住所/都市, '都市')
  • /Suppliers?$filter=endswith(住所/都市, '都市')

...

Address/City には「City」しかありません。私はまだクエリがそのレコードを返すことを望んでいます。

私はこれをすでに読みましたが、アドレスが含まれている機能にしか見えません。他の関数は簡単に修正できますが、eq はより困難です。簡単にするために、この .ToString().ToUpper() を実行して、すべての文字列 const を大文字に置き換えることを考えていました。

値に実際にアクセスできないため、問題が発生しています。

protected override Expression VisitConstant(ConstantExpression node)
            {
//the node.Value i get here is {value(System.Web.OData.Query.Expressions.LinqParameterContainer+TypedLinqParameterContainer`1[System.String])} 
and of type System.Linq.Expressions.ConstantExpression.

値を直接大文字に変更するか、ToString と ToUpper への呼び出しを追加するにはどうすればよいですか?

4

2 に答える 2

0

単に:

?$filter=contains(tolower(siteName),tolower(%27michel%27))
                           ---^---            ---^---
                            Field           value to find

?$filter=contains(tolower(siteName),tolower(%27Michel%27))
?$filter=contains(tolower(siteName),tolower(%27MiCHel%27))
于 2016-06-23T20:10:39.993 に答える