分类:
MVC
public static class EXOrderBy
{
//1
public static IQueryable<TSource> BFMyOrderBy<TSource>(this IQueryable<TSource> source, string Waymane(排序字段名), string stat(点击状态,如果是asc就升序不是就降序))
{
if (Waymane != null)
{
//获取对象里面字段里面的属性
var type = typeof(TSource).GetProperty(Waymane).PropertyType;
//指定类里面的指定方法
var method = typeof(EXOrderBy).GetMethod((stat=="asc")?"OrderbyAsc":"OrderbyDAsc");
//给该方法添加需要的属性
method = method.MakeGenericMethod(typeof(TSource) ,type);
//强制转换并执行该方法
source = (IQueryable<TSource>)method.Invoke(null, new object[] { source, Waymane });
}
return source;
}
//2
public static IQueryable<TSource> OrderbyAsc<TSource,M>( IQueryable<TSource> source, string Waymane)
{
source = source.OrderBy(LAMDBA<TSource, M>(source, Waymane));
return source;
}
//2
public static IQueryable<TSource> OrderbyDAsc<TSource, M>(IQueryable<TSource> source, string Waymane)
{
source = source.OrderByDescending(LAMDBA<TSource,M>(source, Waymane));
return source;
}
//3
public static Expression<Func<TSource,M>> LAMDBA<TSource, M>(IQueryable<TSource> source, string Waymane)
{
//表达式树创建lamdba表达式里面的 a=>a.字段 中的 a(自己命名)
var left = Expression.Parameter(typeof(TSource), "a");
//表达式树创建lamdba表达式里面的 a=>a.字段 中的 字段 (自己命名)
var body = Expression.Property(left, Waymane);
//生成 lmadba表达式 a=>a.字段
Expression<Func<TSource, M>> lamdba = Expression.Lambda<Func<TSource, M>>(body, left);
return lamdba;
}
}评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术