asp.net-web-api – 如何将OData过滤器转换为LINQ表达式?
发布时间:2020-12-16 07:00:38 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试从ODataQueryOptions中提取过滤器表达式,以便我可以在我的业务逻辑类中使用它. public PageResultPoco Get(ODataQueryOptions odataQueryOptions){ ExpressionFuncPoco,bool myExpression = ... // what do i do here? var result = _myBusinessLo
我正在尝试从ODataQueryOptions中提取过滤器表达式,以便我可以在我的业务逻辑类中使用它.
public PageResult<Poco> Get(ODataQueryOptions odataQueryOptions) { Expression<Func<Poco,bool>> myExpression = ... // what do i do here? var result = _myBusinessLogic.Search(myExpression); return new PageResult<Poco>(result,null,null); } 我看了一下描述将查询翻译成HQL here的博客,我认为(至少我希望)这对我正在尝试做的事情来说太过分了. 我基本上需要在Expression< Func< Poco,bool>>中获取滤镜表达式.形成.我试过玩ApplyTo(),但我不太明白.任何帮助赞赏. 解决方法
我们有一个适合您需求的FilterBinder类,但遗憾的是内部类.不过你可以做一个简单的技巧来获取$filter表达式,
public static class ODataQueryOptionsExtensions { public static Expression ToExpression<TElement>(this FilterQueryOption filter) { IQueryable queryable = Enumerable.Empty<TElement>().AsQueryable(); queryable = filter.ApplyTo(queryable,new ODataQuerySettings()); return queryable.Expression; } } 在你的情况下,你可以这样做, public PageResult<Poco> Get(ODataQueryOptions odataQueryOptions) { Expression<Func<Poco,bool>> myExpression = odataQueryOptions.Filter.ToExpression<Poco>(); var result = _myBusinessLogic.Search(myExpression); return new PageResult<Poco>(result,null); } 请注意,表达式包含更像这样的外观,SOTests.Customer [].Where($it => conditional-expression).因此,您可能必须从lambda中提取该条件表达式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在ASP.Net中实现现场级安全性?
- ASP.net:如何测试LINQ查询
- ASP.NET 1.1到4.0迁移:事件不工作
- asp.net-mvc – 更改链接上的部分视图
- asp.net-mvc – Autofac(MVC EF SignalR Hangfire)生命周期
- asp.net-mvc-4 – MVC 4 RC – Aspnet_regsql.exe
- Asp.NET DropDownList在PostBack之后重置SelectedIndex
- asp.net – 无法访问IIS元数据库
- asp.net-mvc – 如何通过URL获取RouteData?
- 从ASP.NET服务器控件动态添加CSS文件
推荐文章
站长推荐
- asp.net-mvc – 如何向ASP.NET MVC2控制器发送包
- asp.net – “与底层事务管理器的通信失败”错误
- asp.net-mvc – 认证之前调用的ASP.NET MVC控制器
- asp:RadioButton和javascript函数$find()
- asp.net – 在.NET 4.5中混合使用Windows和Forms
- Asp.net Core 1.1 升级后操作mysql出错的解决办法
- asp.net – 如何从HTTP请求获取MAC地址?
- asp.net-mvc – 使ASP.MVC2/VS2010应用程序在IIS
- asp.net-mvc-2 – 是asp.net MVC2包括在.net 4.0
- asp.net – Telerik RadGrid具有不同类型的编辑控
热点阅读