是否存在到Linq WHERE表达式的ODATA查询(ODATA到LINQ) [英] Is there a ODATA query to linq where expression (ODATA to Linq )
本文介绍了是否存在到Linq WHERE表达式的ODATA查询(ODATA到LINQ)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
基本上
我要将ODATA查询表达式"$过滤","ITEMID eq1"转换为WHERE(w=>w.itemID==1)
是否有用于此操作的现成库?否则,我需要使用DynamicLinq类和linqKit对其进行编码。
推荐答案
我使用的Microsoft WebAPI安装了以下NuGet包:
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,我可能会遵循睡觉原则,并创建和api,其中检索ID为1的项的url应该是:
/api/items/1
如果我是根据集合中项目的其他属性进行查询,则仅对项目集合使用oData查询,或者执行类似下面的操作(例如,在检索前10条记录时)。
$.ajax({ url: '/api/items', data: $.param({ '$top': 10 }) });
这篇关于是否存在到Linq WHERE表达式的ODATA查询(ODATA到LINQ)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文