2012-02-24 20 views
1

Odata uriをLinq式に変換するアクションフィルタを使用したいと思います。これは、結果の式を使用してビジネスシステムのnonSQL行を照会するためです。odata uriを式に変換する

var query = (EnumerableQuery)request.Properties["queryToCompose"]; 

消えてしまったようだこと:翻訳されたクエリはなど、requestオブジェクトのプロパティとして追加されたため、WCFのWeb APIで、これは些細でした。これを達成するために使用できる公開APIはありますか?

var queryParams = HttpUtility.ParseQueryString(ControllerContext.Request.RequestUri.Query); 
var top = queryParams.Get("$top"); 
var skip = queryParams.Get("$skip"); 
var orderby = queryParams.Get("$orderby"); 

をそして、あなたのIQueryableに直接それを適用します。

答えて

1

クエリがリクエストプロパティコレクションのキーを変更したことが判明しました。また、クエリを解析する内部フィルタがカスタムフィルタの後に実行され、クエリ値が追加されないようです。変換されたクエリを取得するには、コントローラのアクションの中で以下を呼び出します。

(EnumerableQuery<T>)this.Request.Properties["MS_QueryKey"]; 
1

私は...完璧ではありませんが、あなたは、クエリ文字列から直接ODataの式をつかむことができますし、手動でLINQの式を作成似何かをしようとしてきましたまたはフィルタリングに使用しているものを使用します。それほど役に立ちませんが、その始まりです。

0

チェックアウトLinq2Rest。この問題を解決します。

関連する問題