たとえば、次のような 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 への呼び出しを追加するにはどうすればよいですか?