Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有C语言的Linq到REST库吗#_C#_Linq_Rest - Fatal编程技术网

C# 有C语言的Linq到REST库吗#

C# 有C语言的Linq到REST库吗#,c#,linq,rest,C#,Linq,Rest,我有一个Linq表达式,我想将它转换为REST的querystring,即 public IQueryable<Organisation> Organisations; ... var organisations = Organisations.Where(x => x.Name == "Bob"); 如果您控制着数据源,那么它就是您所寻找的 谷歌搜索带来了,虽然我没有任何经验,但它看起来很有用 我想您也可以编写自己的实现,因为坦率地说,RESTAPI在过滤、排序等方面不必

我有一个Linq表达式,我想将它转换为REST的querystring,即

public IQueryable<Organisation> Organisations;

...
var organisations = Organisations.Where(x => x.Name == "Bob");

如果您控制着数据源,那么它就是您所寻找的

谷歌搜索带来了,虽然我没有任何经验,但它看起来很有用

我想您也可以编写自己的实现,因为坦率地说,RESTAPI在过滤、排序等方面不必遵循特定的标准。

试试看

开放数据协议(OData)是一种用于查询和更新数据的Web协议,它提供了一种解锁数据并将其从当前应用程序中存在的竖井中释放出来的方法。OData通过应用和构建HTTP、AtomPublishingProtocol(AtomPublishingProtocol,AtomPub)和JSON等Web技术来实现这一点,以提供对来自各种应用程序、服务和存储的信息的访问。该协议源于过去几年在各种产品中实现AtomPub客户端和服务器的经验。OData用于公开和访问各种来源的信息,包括但不限于关系数据库、文件系统、内容管理系统和传统网站

编辑1: 请看这里:

我最终也找到了一个似乎符合要求的。不支持OAuth,但可以在中构建它。

可以完全按照您的要求执行。此外,它还可以为您调用服务并反序列化实体


您还可以轻松地修改其ODataProvider以支持其他OData本机函数(长度、StartWith等)。

OData库的早期预发布版本有一个查询字符串解析器,但表达式构建从未完全实现,然后该功能被删除。它是库中的主要漏洞,因为没有它,您只剩下有效负载和一些标题支持

幸运的是,只需一行代码即可完成您需要的操作:

var organisations = Organisations.sources.Filter(Request.Params).OfType<Organisations>()
var organizations=organizations.sources.Filter(Request.Params).OfType()

强制转换是必要的,因为查询字符串可以针对集合进行选择,从而生成不同的类型集合。如果您只是基于属性进行断言,那么您就不关心这个问题。

我发现由Microsoft开发的DataServiceContext比这里提到的Linq2Rest和HttpEntityClient第三方库工作得更流畅。 文档也更好。缺点是DataServiceContext只能使用XML(没有JSON)。 但如果客户端在HTTP头中请求XML,WebAPI OData REST服务和WCF数据服务都可以返回XML。因为XML支持不需要额外的开发工作,所以缺少JSON支持不太可能成为问题


有使用DataServiceContext的LINQ to REST示例:

项目站点链接现在已关闭。看起来它不再被维护了。
var organisations = Organisations.sources.Filter(Request.Params).OfType<Organisations>()