是否存在到Linq WHERE表达式的ODATA查询(ODATA到LINQ) [英] Is there a ODATA query to linq where expression (ODATA to Linq )

查看:39
本文介绍了是否存在到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆