zoukankan      html  css  js  c++  java
  • Lambda 动态表达式(排序)

    网上看到的:

    class Program
        {
    
            static List<User> list = new List<User>()
            {
                new User(){ID=1,Name="Hello",Age=17,Hobby="a"},
                new User(){ID=2,Name="Boy",Age=50,Hobby="z"},
                new User(){ID=3,Name="Girl",Age=33,Hobby="x"},
                new User(){ID=4,Name="Fox",Age=43,Hobby="b"},
                new User(){ID=5,Name="Fire",Age=17,Hobby="f"},
            };
    
            static void Main(string[] args)
            {
                var q = list.AsQueryable().OrderBy("Name", true);
    
                q.ToList().ForEach(x => Console.WriteLine(string.Format("ID:{0},Name:{1},Age:{2},Hobby:{3}", x.ID, x.Name, x.Age, x.Hobby)));
    
                Console.ReadLine();
            }
    
    
        }
    
        public class User
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
            public string Hobby { get; set; }
        }
    
    //动态表达式
        public static class Test
        {
            
            public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string propertyName,
    bool asc = true) where TEntity : class
            {
                string command = asc ? "OrderBy" : "OrderByDescending";
    
                var type = typeof(TEntity);
                var property = type.GetProperty(propertyName);
                var parameter = Expression.Parameter(type, "p");
                var propertyAccess = Expression.MakeMemberAccess(parameter, property);
                var orderByExpression = Expression.Lambda(propertyAccess, parameter);
                var resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { type, property.PropertyType }, source.Expression, Expression.Quote(orderByExpression));
    
                return source.Provider.CreateQuery<TEntity>(resultExpression);
            }
    
        }




  • 相关阅读:
    Linux dnsmasq.conf
    Linux 关闭网络管理服务
    Python Mysql_db对数据查询进行处理
    Python windows安装MYSQL_db
    Python 递归
    Nginx 系统维护配置
    ls 查看时间排序
    Nginx Linux yum安装
    Nginx 前后端分离配置 分发
    Spring boot 执行jar文件 方式
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/9779713.html
Copyright © 2011-2022 走看看