• Lambda 动态表达式(排序)


    网上看到的:

    class Program
        {
    
            static List<User> list = new List<User>()
            {
                new User(){ID=1,Name="Hello",Age=17,Hobby="a"},
                new User(){ID=2,Name="Boy",Age=50,Hobby="z"},
                new User(){ID=3,Name="Girl",Age=33,Hobby="x"},
                new User(){ID=4,Name="Fox",Age=43,Hobby="b"},
                new User(){ID=5,Name="Fire",Age=17,Hobby="f"},
            };
    
            static void Main(string[] args)
            {
                var q = list.AsQueryable().OrderBy("Name", true);
    
                q.ToList().ForEach(x => Console.WriteLine(string.Format("ID:{0},Name:{1},Age:{2},Hobby:{3}", x.ID, x.Name, x.Age, x.Hobby)));
    
                Console.ReadLine();
            }
    
    
        }
    
        public class User
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
            public string Hobby { get; set; }
        }
    
    //动态表达式
        public static class Test
        {
            
            public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string propertyName,
    bool asc = true) where TEntity : class
            {
                string command = asc ? "OrderBy" : "OrderByDescending";
    
                var type = typeof(TEntity);
                var property = type.GetProperty(propertyName);
                var parameter = Expression.Parameter(type, "p");
                var propertyAccess = Expression.MakeMemberAccess(parameter, property);
                var orderByExpression = Expression.Lambda(propertyAccess, parameter);
                var resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { type, property.PropertyType }, source.Expression, Expression.Quote(orderByExpression));
    
                return source.Provider.CreateQuery<TEntity>(resultExpression);
            }
    
        }




  • 相关阅读:
    CSS3——复杂选择器
    单元测试覆盖率设置
    你必须了解的「架构」小历史
    js正则表达式:学习网址和部分正则验证
    转: js实现全角半角检测的方法
    Linux and the Unix Philosophy(1)
    HTML DOM 对象
    理解css中的 content:" " 是什么意思
    JS
    js
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/9779713.html
Copyright © 2020-2023  润新知