zoukankan      html  css  js  c++  java
  • Lambda

      产品需求来产生技术提升,产品要求灵活的根据前端传过来的字段来进行可配置的排序,Orderby( e => e.?) 

      orderby方法中是传递一个委托方法,返回一个Object对象,默认就是我们进行排序的属性字段值,所以我们也可以灵活使用这块委托方法,只要能返回对应属性的值就可以让这个表达式成立。

      我们可以通过反射,将传过来的参数变量动态获取该属性的值,然后返回给表达式,就能达到原来orderby的效果了。实现代码如下

       class Program
        {
            public static void Main(string[] args)
            {
                List<Employee> data = new List<Employee>()
                {
                    new Employee()
                    {
                        ID = 1,
                        Age = 22,
                        Name = "阿飞",
                        Sex = 'm'
                    },
                     new Employee()
                     {
                         ID = 1,
                         Age = 12,
                         Name = "阿飞",
                         Sex = 'm'
                     },
                    new Employee()
                    {
                        ID = 2,
                        Age = 23,
                        Name = "阿飞",
                        Sex = 'm'
                    },
                };
            
                var datanew = data.OrderByDescending(e => GetPropertyValue(e, "Age"));
                Console.WriteLine(JsonConvert.SerializeObject(datanew));          
                Console.ReadKey();
            }
    
            private static object GetPropertyValue(object obj, string property)
            {
                PropertyInfo propertyInfo = obj.GetType().GetProperty(property);
                return propertyInfo.GetValue(obj, null);
            }
        }

      

  • 相关阅读:
    logging模块,序列化,range模块
    生成器以及推导式
    递归,自定义模块,time模块,datetime
    装饰器,内置函数
    函数名的使用以及第一类对象,闭包,迭代器
    python文件操作
    面向对象
    os sys hashlib
    文件操作
    logging模块
  • 原文地址:https://www.cnblogs.com/leeafei/p/7374506.html
Copyright © 2011-2022 走看看