2011-04-13 44 views
5

我创建了一个WCF服务,其结果不是严格的OData提要(出于复杂的原因,业务策略等)。另外,URL的格式与OData略有不同,但其大部分功能非常相似。将OData Uri转换为等效的Linq表达式

我如何转换Linq表达式树中的URI?

在此先感谢。

回答

2

目前这个功能并没有公开。并且自己编写它相当复杂(取决于您需要支持哪种类型的查询以及您的模型)。 是否真的有必要偏离OData协议?也许你需要做的事可以通过其他方式来实现。

+0

谢谢您的回答。这是必要的,因为业务策略更改关键字并且返回的Feed稍有不同(例如:自定义扩展中的条目有效内容)。 – Merrin 2011-04-19 11:23:58

+0

我必须将接收到的Uri转换为Linq查询。如果它是OData,没有问题,因为WCF数据服务已经完成了所有工作。问题是内部它几乎像OData,但具有不同的Uri格式。 – Merrin 2011-04-19 11:27:20

+0

我目前正在对Uri进行“解码”,并通过Dynamic Linq启动查询。 – Merrin 2011-04-19 11:30:20

0

您可以使用下面的NuGet包:https://www.nuget.org/packages/Community.OData.Linq

它允许使用OData的文本查询参数LINQ expresson任何IQuerable没有ASP.NET依赖

var result = query.OData().Filter("Id eq 1 or Name eq 'n3'").OrderBy("Name desc").ToArray();