• LINQ中的动态排序


    使用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 + " " + e.Age + " " + e.Salary));

  • 相关阅读:
    java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)
    Java面试题集合(比较实用)
    java实现导出Excel(跨行,跨列)
    使用java类破解MyEclipse
    Oracle的导入导出 DMP 文件
    报表导出功能
    win7_oracle11g_64位连接32位PLSQL_Developer
    oralce11g导出dmp然后导入Oracle10g
    回首向来萧瑟处
    【Python】1.PyQT5界面初尝试
  • 原文地址:https://www.cnblogs.com/soundcode/p/6410007.html
Copyright © 2020-2023  润新知