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参数,按照一定的规格就好了

  • 相关阅读:
    Linux下修改时间时区的方法介绍
    IIS启用GZip压缩的详细教程(图文)
    jquery定时器的简单代码
    IIS启用GZIP压缩js、css无效的原因及解决方法
    python批量导出导入MySQL用户的方法
    mysql执行计划介绍
    js+json用表格实现简单网站左侧导航
    React Native 二维码扫描组件
    mysql如何修改开启允许远程连接
    react native中的聊天气泡以及timer封装成的发送验证码倒计时
  • 原文地址:https://www.cnblogs.com/hedywqy/p/2116504.html
Copyright © 2011-2022 走看看