zoukankan      html  css  js  c++  java
  • 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参数,按照一定的规格就好了

  • 相关阅读:
    Codevs_1403_新三国争霸_(Kruskal+动态规划)
    BZOJ_1084_[SCOI2005]_最大子矩阵_(动态规划)
    BZOJ_1180_[CROATIAN2009]_OTOCI_(LCT)
    BZOJ_1611_[Usaco2008_Feb]_Meteor_Shower流星雨_(bfs)
    hdu5338 (二进制,双指针)
    并查集专辑 (poj1182食物链,hdu3038, poj1733, poj1984, zoj3261)
    生成树专题
    生成树相关问题
    uvaLive5713 次小生成树
    如何将无向图变为点/边双连通,如何将有向图变为强连通图
  • 原文地址:https://www.cnblogs.com/hedywqy/p/2116504.html
Copyright © 2011-2022 走看看