zoukankan      html  css  js  c++  java
  • Lambda动态排序通用方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Linq.Expressions;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace DataSort
    {
        public class DataHelper
        {
            public static IQueryable<T> Sort<T>(IQueryable<T> queryable, string sort, string order)
            {
                if (string.IsNullOrWhiteSpace(sort))
                {
                    return queryable;
                }
                var sortExpression = Expression.Parameter(queryable.ElementType);
                var selector = Expression.Lambda(Expression.PropertyOrField(sortExpression, sort), sortExpression);
                if (order.ToLower() == "asc")
                {
                    return (IQueryable<T>)queryable.Provider.CreateQuery(Expression.Call(typeof(Queryable), "OrderBy", new Type[] { queryable.ElementType, selector.Body.Type }, queryable.Expression, selector));
                }
                else if (order.ToLower() == "desc")
                {
    
                    return (IQueryable<T>)queryable.Provider.CreateQuery(Expression.Call(typeof(Queryable), "OrderByDescending", new Type[] { queryable.ElementType, selector.Body.Type }, queryable.Expression, selector));
                }
                return queryable;
            }
        }
    }
  • 相关阅读:
    springboot 基础
    spring 基础
    spring MVC 基础
    windows shell
    oracle 创建用户和视图并授权
    maven 安装本地依赖
    JAVA ssl 证书
    mybatis 递归
    MyBatis基础
    当年的毕设-cpf (一个简易的协议 fuzzer)
  • 原文地址:https://www.cnblogs.com/zhuyongblogs/p/5920371.html
Copyright © 2011-2022 走看看