• 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);
            }
        }

      

  • 相关阅读:
    诸葛亮的后半生:狗笼子里挥舞丈八蛇矛
    一句话摘录
    【书摘】The Joshua tree epiphany
    玩具程序:bigInt
    旅行的力量
    记忆的力量
    快的力量
    Windbg学习笔记【4】
    戴尔笔记本win8全新安装
    悟透JavaScript
  • 原文地址:https://www.cnblogs.com/leeafei/p/7374506.html
Copyright © 2020-2023  润新知