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

List按照某个字段排序

   /// <summary>
    /// 按照某个字段排序
   
    /// </summary>
   
    /// <typeparam name="T"></typeparam>
    
    /// <param name="list"></param>
   
    /// <param name="sortfield">需要排序的字段</param>
    
    /// <param name="IsDesc">倒序还是顺序</param>
 
    /// <returns></returns>
  
    public static List<T> OrderByField<T>(this List<T> 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<T>(
                   Expression.Call(typeof(Queryable),
                                   IsDesc ? "OrderByDescending" : "OrderBy",
                                   new Type[] { Queryable.ElementType, x.Body.Type },
                                   Queryable.Expression,
                                   x)).ToList();
    }

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

例如

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

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

最后给上 Res_Signal 类

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

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

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

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

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

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

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

        /// <summary>
        /// 头像
        /// </summary>
        public String HeadImg { get; set; }

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

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

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

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

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

   

     
    }

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值