2013-03-01 11 views

Odpowiedz

9

Używam Microsoft WebAPI z poniższych pakietów Nuget zainstalowanych:

http://nuget.org/packages/Microsoft.Data.OData/

http://nuget.org/packages/microsoft.aspnet.webapi.odata

który pozwala mi napisać takie rzeczy jak:

using System.Web.Http; 
using System.Web.Http.OData.Query; 

// Some stuff left out 

[Queryable] 
public IQueryable<Item> Get(ODataQueryOptions<Item> query) 
{   
    var items = query.ApplyTo(from item in context.Items select item); 
    return (IQueryable<Item>) items; 
} 

Potem można to nazwać używając Ajax jQuery (dla przykładu, wolę używać BackboneJS) w następujący sposób:

$.ajax({ url: '/api/items', data: $.param({ '$filter': 'ID eq 1' }) }); 

Który zwróci następnie tylko elementy o identyfikatorze równym 1, co według mnie jest po?

Jeśli itemID jest głównym ID obiektu jesteś odzyskiwaniem, prawdopodobnie przestrzegania zasad REST oraz tworzenie i API, gdzie url aby pobrać element z ID 1 będzie:

/api/items/1 

I używaj tylko zapytań oData w kolekcji przedmiotów, jeśli pytałem na podstawie innych właściwości elementów w kolekcji, lub wykonaj coś takiego jak na przykład podczas pobierania 10 rekordów.

$.ajax({ url: '/api/items', data: $.param({ '$top': 10 }) }); 
+0

query.ApplyTo wygląda na to, co szukam. Potrzebuję go na mono. Dziękuję Ci. –

1

Możesz używać następujących pakiet Nuget zastosować filtr: https://www.nuget.org/packages/Community.OData.Linq

przykładowy kod byłoby:

using System.Linq; 
using Community.OData.Linq; 

// dataSet in this example - any IQuerable<T> 
Sample[] filterResult = dataSet.OData().Filter("Id eq 2 or Name eq 'name3'").ToArray(); 

Obecnie obsługiwane: filtr i orderby w formacie v4

Powiązane problemy