C#List按照某个对象里面的属性字段排序

List按照某个字段排序

   /// 
    /// 按照某个字段排序
   
    /// 
   
    /// 
    
    /// 
   
    /// 需要排序的字段
    
    /// 倒序还是顺序
 
    /// 
  
    public static List OrderByField(this List list, string sortfield, bool IsDesc)
    {
    
        var Queryable = list.AsQueryable();
        
        var p = Expression.Parameter(typeof(T), "p");
        var x = Expression.Lambda(Expression.Property(p, sortfield), p);
        
        return Queryable.Provider.CreateQuery(
                   Expression.Call(typeof(Queryable),
                                   IsDesc ? "OrderByDescending" : "OrderBy",
                                   new Type[] { Queryable.ElementType, x.Body.Type },
                                   Queryable.Expression,
                                   x)).ToList();
    }

代码已贴上,调用的时候直接使用list.OrderByField(“需要排序的字段”,true);

例如

        List list = new List();
      
        list = list.OrderByField("ProfitRate", true).ToList();

        list = list.OrderByField("Intro", true).ToList();

最后给上 Res_Signal 类

[Serializable]
    public class Res_Signal
    {
        /// 
        /// 交易账号ID
        /// 
        public Guid TradeAccountId { get; set; }

        /// 
        /// 交易账号简介
        /// 
        public String Intro { get; set; }

        /// 
        /// 交易账号昵称
        /// 
        public String Nickname { get; set; }

        /// 
        /// 订阅限制值
        /// 
        public Int32 SubscribeLimit { get; set; }

        /// 
        /// 订阅模式 目前都是免费  0免费  1收费
        /// 
        public Int32 SubscribeMode { get; set; }

        /// 
        /// 订阅模式名称
        /// 
        public String SubscribeMode_Des { get; set; }

        /// 
        /// 平台名称
        /// 
        public String Name { get; set; }

        /// 
        /// 头像
        /// 
        public String HeadImg { get; set; }

        /// 
        /// 用户昵称
        /// 
        public String UserNickname { get; set; }

        /// 
        /// 订阅人数
        /// 
        public Int32 SubscribeCount { get; set; }

        /// 
        /// 平台图片
        /// 
        public String Img { get; set; }

        /// 
        /// 收益率
        /// 
        public decimal ProfitRate { get; set; }

        /// 
        /// 总收益
        /// 
        public decimal ProfitLossAmount { get; set; }

   

     
    }

不用每次判断 传进来的字段跟需要排序的字段 进行对比,一个方法搞定。

你可能感兴趣的:(C#,c#)