我正在使用$expand
來增強OData SharePoint REST查詢,並且我想要在擴展實體的其中一個屬性上使用$filter
。但是,我無法找到關於此正確語法的任何文檔。我發現了幾個點,可能暗示使用實體/屬性,而是試圖在此之後,我會失敗:
查詢:
將返回:
syntax error '\"' at position 10.
我會怎樣基於類別標題的實體進行篩選,當類別是高級別時,它的Title屬性是子級別?
我正在使用$expand
來增強OData SharePoint REST查詢,並且我想要在擴展實體的其中一個屬性上使用$filter
。但是,我無法找到關於此正確語法的任何文檔。我發現了幾個點,可能暗示使用實體/屬性,而是試圖在此之後,我會失敗:
查詢:
將返回:
syntax error '\"' at position 10.
我會怎樣基於類別標題的實體進行篩選,當類別是高級別時,它的Title屬性是子級別?
看起來問題是斜線轉義的雙引號,而您使用的是substring
而不是substringof
。
如果您使用單引號而不工作?或者你是否想要從字面上匹配雙引號字符? (如果是這樣的話,我想你可以離開了單引號內轉義雙引號)
_vti_bin/listdata.svc/Posts?$expand=Category&$filter=substringof('Featured Article',Category/Title) eq false
或
_vti_bin/listdata.svc/Posts?$expand=Category&$filter=substringof('"Featured Article"',Category/Title) eq false
作爲例如在公共服務,來看看這個查詢:
http://services.odata.org/Northwind/Northwind.svc/Products?$filter=substringof('Bev', Category/CategoryName) eq true
至於對OData的查詢語法的文檔,我建議採取看看這個頁面:http://www.odata.org/documentation/odata-v3-documentation/url-conventions
在過濾器部分中有相當多的示例可用於指導。
導航實體上的過濾器獨立於展開。
如果導航屬性是一家集(1:1的關係)
可以用類型/屬性篩選,這裏是尋找由客戶所有訂單的一個例子一些ID: http://services.odata.org/V2/Northwind/Northwind.svc/Orders?$filter=Customer/CustomerID%20eq%20%27ANATR%27
如果導航屬性是一個集合(1:N的關係):
OData版本2:當擴展的實體是一個實體集合時,您無法同時在擴展實體和目標實體上進行搜索。例如,你不能這樣做,查詢http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$expand=Orders&$filter=Orders/ShipCity%20eq%20%27Berlin%27
一個解決可能翻轉查詢(在選擇訂單,而不是客戶的 - 每個訂單有1個CUTOMER): http://services.odata.org/V2/Northwind/Northwind.svc/Orders?$filter=ShipCity%20eq%20%27Berlin%27&$expand=Customer 但你可以得到重複的客戶(你的實際目標實體)。您可能會考慮使用自定義查詢選項(http://www.odata.org/documentation/odata-version-3-0/url-conventions/)。
的OData版本4:你可以做一個過濾器與任何結構: http://services.odata.org/V4/Northwind/Northwind.svc/Customers $過濾器=國家%20當量%20%27Germany%27%20個於是%20Orders /任何(O:O /貨主國家%20當量%20%27Berlin%27)
對不起......我應該提到我在SharePoint 2010 ...它使用的OData V2。 –
我不認爲這個東西應該在v2和v3之間有所不同。如果你看看這裏的v2文檔(http://www.odata.org/documentation/odata-v2-documentation/uri-conventions/#45_Filter_System_Query_Option_filter),它仍然說使用'substringof'而不是'substring' 。您發佈的網址有什麼錯誤? –
很高興你問! 'System.Collections.Generic.IEnumerable'1 [[Microsoft.SharePoint.Linq.DataServiceEntity,Microsoft.SharePoint.Linq,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c]類型中不存在屬性'標題' ]'在第40位。「 '。但是,當我取出針對Category Entity的過濾器時,返回的json對象中確實有一個名爲'Title'的第一級屬性。 –