zoukankan      html  css  js  c++  java
  • 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 + "\t" + e.Age + "\t" + e.Salary));
  • 相关阅读:
    225. Implement Stack using Queues
    232. Implement Queue using Stacks
    LeetCode 763 划分字母区间
    CentOS7+eDEX-UI打造属于你的极客桌面
    好玩又有趣的linux终端命令
    Linux 应急响应入门——入侵排查
    active_anon/inactive_anon
    Red Hat 平台的推荐交换大小是多少?
    为什么RHEL系统使用交换空间而不是释放缓存和缓冲内存?
    RHEL 交换内存(Swap)使用率为 100%
  • 原文地址:https://www.cnblogs.com/Qbit/p/1765694.html
Copyright © 2011-2022 走看看