LINQ orderby 排序妙用

做排序,项目中发现好多地方要用到排序,什么正序、倒序、写的很累,不过为发现排序写一个综合方法很不错的

1、得到某某的数据

  IEnumerable<xxxx> = .....................;

2、得到要排序的参数orderby

  orderby参数格式:

  orderby = "CreateTime asc,Title desc";

--------------------------------------------------------------------------

  OrderUsingSortExpression(res.AsQueryable(), orderby).AsEnumerable();

3、对数据进行排序的方法

     public static IOrderedQueryable<TEntity> OrderUsingSortExpression<TEntity>(this IQueryable<TEntity> source, string sortExpression) where TEntity : class
        {
            String[] orderFields = sortExpression.Split(',');
            IOrderedQueryable<TEntity> result = null;
            for (int currentFieldIndex = 0; currentFieldIndex < orderFields.Length; currentFieldIndex++)
            {
                String[] expressionPart = orderFields[currentFieldIndex].Trim().Split(' ');
                String sortField = expressionPart[0];
                Boolean sortDescending = (expressionPart.Length == 2) && (expressionPart[1].Equals("DESC", StringComparison.OrdinalIgnoreCase));
                if (sortDescending)
                {
                    result = currentFieldIndex == 0 ? source.OrderByDescending(sortField) : result.ThenByDescending(sortField);
                }
                else
                {
                    result = currentFieldIndex == 0 ? source.OrderBy(sortField) : result.ThenBy(sortField);
                }
            }
            return result;
        }

  4、这样所有的后台方法不论排序有多少个,只用定义一个orderby参数,按照一定的规格就好了

转载于:https://www.cnblogs.com/hedywqy/archive/2011/07/25/2116504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值