2012-08-29 40 views
1

我想創建的Web API的OData服務返回reault類型的包括集合數據成員和其他成員像這樣的服務回報:網頁API OData服務 - 返回複雜類型

http://services.odata.org/OData/OData.svc/Suppliers $過濾器=地址/城市均衡? 「雷蒙德」

正如你所看到的結果類型是由集合數據成員和其他成員

誰能給我一個樣品怎麼辦呢?

我能不能成功創建這種複雜類型的並能過濾收集項目由有值

如宥可以在此查詢看到它返回所有的結果不帶過濾器的項目

services.odata.org/OData/OData.svc/Suppliers

我希望能夠過濾這種類型是這樣的:

services.odata.org/OData/OData.svc/Suppliers?$filter=地址/城市eq'雷蒙德'

在這個查詢中,我設法過濾收集成員項目,並仍然返回其他數據成員。

回答

0

Odata支持隱式在asp.net webapi RC中。 您只需從您的Actions中返回一個IQueryable,並用[QueryableAttribute]標記它。 只有這麼多支持查詢字符串的數據過濾。

當我看到[QueryableAttribute]不在RTM中生成時,我有點失望。

在RTM中,它以預覽/ alpha形式在Nuget上作爲單獨的軟件包Microsoft.AspNet.WebApi.OData提供。完整版將於今年秋季晚些時候發佈。你可以從這裏獲取它(http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData)。有一個很好的概述文章可用(http://blogs.msdn.com/b/alexj/archive/2012/08/15/odata-support-in-asp-net-web-api.aspx)

+0

我知道如何過濾可排隊的數據。 我的問題,我想過濾的對象包括集合和一些其他數據成員不集合類型。 所以我不知道如何實現iqueriable 你能給我舉例如何將tyoe轉換爲iqueriable而不使用集合或實現枚舉 因爲fillter不能在子類型上工作 –