将OData Uri转换为他的等效Linq表达式

时间:2011-04-13 11:25:14

标签: c# wcf linq odata wcf-data-services

我正在创建一个WCF服务,其结果不是严格的OData供稿(出于复杂的原因,业务策略等)。此外,URL的格式与OData略有不同,尽管它的大部分功能非常相似。

如何在Linq Expression树中转换URI?

提前致谢。

3 个答案:

答案 0 :(得分:5)

看看Linq2Rest - https://bitbucket.org/jjrdk/linq2rest。它将OData查询解析为LINQ表达式,反之亦然。它也可以在Nuget上使用。

答案 1 :(得分:2)

目前,此功能不会单独公开。自己编写它是相当复杂的(取决于您需要支持的类型和模型)。 是否真的有必要偏离OData协议?也许您需要做的事情可以通过其他方式实现。

答案 2 :(得分:0)

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

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

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