2015-08-14 69 views
0

有什麼方法可以確保將特定屬性或操作符添加到OData表達式樹中,即使它們未在URL中指定?例如,我想在每次執行搜索時添加一些日期時間約束,即使用戶沒有在URL中指定它。在Filter子句OData中爲實體設置默認值.NET


最近我有做要求不變的情況下一個問題,我通過遍歷的OData表達式樹和添加新的功能調用到它這似乎有點矯枉過正,我還沒有發現任何東西,因爲那麼好解決了這個問題。我正在使用OData 6.10。

回答

0

如果要基於用戶請求應用某個固定查詢子句,可以使用AND二元運算符構建新的查詢表達式來組合您的固定子句和用戶子句。

例如,添加限制查詢產品RELEASEDATE於2013年更新,你可以做到以下幾點:

// Fixed clause 
var parser = new ODataUriParser(model, new Uri("Products?$filter=ReleaseDate ge 2013-01-01T00:00:00Z", UriKind.Relative)); 
var fixedExp = parser.ParseFilter().Expression; 

// User clause 
parser = new ODataUriParser(model, new Uri("Products?$filter=Rating eq 1", UriKind.Relative)); 
var userExp = parser.ParseFilter().Expression; 

var newExp = new BinaryOperatorNode(BinaryOperatorKind.And, fixedExp, userExp); 
+0

那麼,這簡化了新的查詢的創建,但有什麼辦法來確定用戶除了遍歷表達式樹之外,還創建了一個特定的查詢,如'filter = Rating eq 1'? – Welp