是否有ODATA查询到Linq,其中表达式(ODATA到LINQ)

问题描述 投票:0回答:4

基本上,

我想转换odata查询表达式

“ $ filter”,“ itemid eq 1”到where(w => w.itemid == 1) 那里有一个准备的库来进行此操作吗?否则,我需要使用Dynamiclinq类和linqkit进行编码。

我使用Microsoft WebAPI和以下Nuget软件包安装了:

linq odata
4个回答
11
投票
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' }) });

然后,哪个将仅返回具有等于1的ID的项目,我认为这是您所追求的?

如果ItemID是您要检索的对象的主要ID,我可能会遵循REST原则并创建API,其中URL以1的ID检索项目将是:
/api/items/1

如果我根据收藏中项目的其他属性查询项目,或在检索前10个记录时进行类似的操作,则仅在项目集合上使用ODATA查询。

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


您可以使用以下Nuget软件包应用过滤器:

Https://www.nuget.org/packages/community.odata.linq



5
投票

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(); 目前支持:V4格式的过滤和订单

您可以使用
Microsoft.rest.azure.odata

弦滤光片= new Odataquery(x => x.Itemid == 1).filter;

0
投票

您可以使用odata2linq nuget:https://www.nuget.org/packages/odata2linq

它是commouncy.odata.linq的继任者,它在ihar

.

0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.