基本的、
odata クエリ式"$filter", "itemID eq 1" をwhere(w=>w.itemID==1)に変換したい
この操作の準備が整ったライブラリはありますか? それ以外の場合は、DynamicLinq クラスと linqKit を使用してコーディングする必要があります。
次の NuGet パッケージがインストールされた Microsoft WebAPI を使用しています。
http://nuget.org/packages/Microsoft.Data.OData/
http://nuget.org/packages/microsoft.aspnet.webapi.odata
次のようなものを書くことができます:
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;
}
次に、次のように jQuery Ajax を使用して呼び出すことができます (例のために、BackboneJS を使用することを好みます)。
$.ajax({ url: '/api/items', data: $.param({ '$filter': 'ID eq 1' }) });
次に、IDが1のアイテムのみを返すのはどれですか?これはあなたが求めているものだと思いますか?
itemID が取得するオブジェクトのメイン ID である場合、おそらく REST の原則に従い、ID 1 のアイテムを取得するための URL を作成して API を作成します。
/api/items/1
また、コレクション内のアイテムの他のプロパティに基づいてクエリを実行している場合は、アイテムのコレクションに対してのみ oData クエリを使用するか、たとえば上位 10 レコードを取得するときに次のようなことを行います。
$.ajax({ url: '/api/items', data: $.param({ '$top': 10 }) });