分类:
.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
公网安备:50010702506256
欢迎加群交流技术