Linq自定义排序的写法(方法二)
这个是我在网上百度的方法存在一定问题,先进行记录,之后修改;
////// 根据指定属性名称对序列进行排序 /// /// source中的元素的类型 /// 一个要排序的值序列 /// 属性名称 /// 是否降序 /// public static IQueryable OrderBy (this IQueryable source, string property, bool descending) where TSource : class { ParameterExpression param = Expression.Parameter(typeof(TSource), "c"); PropertyInfo pi = typeof(TSource).GetProperty(property); MemberExpression selector = Expression.MakeMemberAccess(param, pi); LambdaExpression le = Expression.Lambda(selector, param); string methodName = (descending) ? "OrderByDescending" : "OrderBy"; MethodCallExpression resultExp = Expression.Call(typeof(Queryable), methodName, new Type[] { typeof(TSource), pi.PropertyType }, source.Expression, le); return source.Provider.CreateQuery (resultExp); }
使用:
using (Entities entitys = new Entities()) { var lists = Kits.OrderBy(entitys.Members.Where(n => true), "MemberId", true).ToList(); }