动态linq

 public static Func<T,Tkey> DynamicLambda<T, Tkey>(string propertyName)
        {
         
            ParameterExpression p = Expression.Parameter(typeof(T), "p");
            Expression body = Expression.Property(p, typeof(T).GetProperty(propertyName));
            
            var lambda = Expression.Lambda<Func<T, Tkey>>(body, p);
           
            return lambda.Compile();
        }

 应用:

List<Employee> list = new List<Employee>();
            list.Add(new Employee() { Name = "张三", Age = 21, Salary = 1800f, Job = "UI" });
            list.Add(new Employee() { Name = "李四", Age = 25, Salary = 2000f, Job = "DBA" });
            list.Add(new Employee() { Name = "王五", Age = 24, Salary = 2000f, Job = "UI" });
            list.Add(new Employee() { Name = "李九", Age = 31, Salary = 2900f, Job = "DBA" });
            list.Add(new Employee() { Name = "张一", Age = 21, Salary = 2100f, Job = "UI" });
            list.Add(new Employee() { Name = "王三", Age = 32, Salary = 2100f, Job = "DBA" });
  
             //按Age排序
            list.OrderBy(DynamicLambda<Employee,int>("Age"));
            //按Salary排序
            // list.OrderBy(DynamicLambda<Employee,float>("Salary"));

            list.ForEach(e => Console.WriteLine(e.Name + "\t" + e.Age + "\t" + e.Salary));
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值