tnblog
首页
视频
资源
登录

表达式树【Expression】+反射-实现动态排序

4860人阅读 2019/10/23 17:09 总访问:97801 评论:0 收藏:2 手机
分类: .NET扩展


首先 要实现一个传2个参数的方法,进行动态排序



在写一个方法接收传过来的数据进行处理返回

我们先是拿到sort类型

—>想要实现任意类型我们得用一个方法来中转

TSource就是我们的实体

因为我们不确定传过来的类型是什么 就用泛型(M)来接收 这时处理后的Lef得到的就是({a})body得到的就是({a.sort的值})

执行到  Expression<Func<TSource, M>> Lambda = Expression.Lambda<Func<TSource, M>>(body, lef);的时候

Lambda=(a=>a.sort);这时就刚好达到了我们想要的效果,然后在对Lambda进行排序

这里我们不能直接调用方法,因为直接调用方法还是无法传递类型,所以要用到反射

 -->通过反射拿到方法

var nethod = typeof(EfMyodeby).GetMethod(sortway == "esc" ? "DealAsc" : "DealAdesc");


-->给反射拿到的方法提供泛型 

nethod=  nethod.MakeGenericMethod(typeof(TSource), PropType);

-->反射调用

IQueryable<TSource> reusty = (IQueryable<TSource>)nethod.Invoke(null, new object[] { lamdba, sort });


——>结果



评价
最近老犯困
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术