LINQ 根据指定属性名称对序列进行排序

2021-02-11 07:17

阅读:475

标签:create   param   指定   dna   cal   new   pre   res   derby   

        /// 
        /// 根据指定属性名称对序列进行排序
        /// 
        /// 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);
        }

  

LINQ 根据指定属性名称对序列进行排序

标签:create   param   指定   dna   cal   new   pre   res   derby   

原文地址:https://www.cnblogs.com/itclw/p/12737142.html


评论


亲,登录后才可以留言!