0
我處於奇怪的情況,我有一些數字作爲文本存儲在數據庫中。不是很熟悉OData,我試圖編寫一個查詢來處理這些字符串作爲實際的數字。按OData長度過濾字段
$filter=(((length(Document/DocumentSet/ReferenceNumbers) ge 3) and (Document/DocumentSet/ReferenceNumbers gt '100')))
是我能想出的最好,但給了我一個ODataException
The argument for an invocation of a function with name 'length' is not a single value. All arguments for this function must be single values.
或者,如果我嘗試使用(我還在試圖找出哪一個是正確的,我真不知道的OData):
$filter=(((length(Document/DocumentSet/ReferenceNumbers/Number) ge 3) and (Document/DocumentSet/ReferenceNumbers/Number gt '100')))
然後
The parent value for a property access of a property 'Number' is not a single value. Property access can only be applied to a single value.
問題是:有什麼方法可以按OData過濾一些東西嗎?
你可以添加一些信息:什麼是組要篩選上(前'$ filter'部分)?這個集合元素的數據模型(來自'$ metadata'端點)是什麼?我猜'ReferenceNumbers'是一個數組,所以你必須使用lambda進行過濾。到目前爲止,我無法提供更多幫助,但lambda的'length'和'gt'可能已經足夠。完整的操作列表(也有可用的投影):http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0- errata03-os-part2-url-conventions-complete.html#_Toc453752358 – mat3e
'$ filter'之前的部分不是一個集合,我相信。 (原始實現是非REST事物作爲REST事物出售)問題的$元數據部分我甚至不明白(對不起)。無論如何,我會嘗試lambda表達式,我在代碼中看到了一些,可能他們出於某種原因。 – ytg
在OData中有一個端點'root/$ metadata',它返回一個服務描述實體數據模型。 '$ filter'應該運行在一個要過濾的集合上(這就是我所說的「set」)。讓我知道我是否可以幫助你。 – mat3e