コード例 #1
0
        public static IQueryable <TEntity> OrderByDescending <TEntity>(this IQueryable <TEntity> source, string orderByProperty)
        {
            string command           = "OrderByDescending";
            var    property          = source.ElementType.GetProperty(orderByProperty);
            var    parameter         = Expression.Parameter(source.ElementType, "p");
            var    propertyAccess    = Expression.MakeMemberAccess(parameter, property);
            var    orderByExpression = Expression.Lambda(propertyAccess, parameter);
            var    resultExpression  = Expression.Call(typeof(Queryable), command, new Type[] { source.ElementType, property.PropertyType },
                                                       source.AsQueryable().Expression, Expression.Quote(orderByExpression));

            return(source.AsQueryable().Provider.CreateQuery <TEntity>(resultExpression));
        }