zoukankan      html  css  js  c++  java
  • EF-简化排序

    
    respository.GetPaged<S_Users>(out count, m => m.LoginName.Contains("a"),"LoginName asc,LoginNum desc", 1, 20);
    
            public IList<TEntity> GetPaged<TEntity>(out int total, Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, int index = 1, int size = 20) where TEntity : class
            {
                int skipCount = (index - 1) * size;
                var query = Get(filter, orderBy);
                total = query.Count();
                query = skipCount > 0 ? query.Skip(skipCount).Take(size) : query.Take(size);
                return query.ToList();
            }
    
            public IList<TEntity> GetPaged<TEntity>(out int total, Expression<Func<TEntity, bool>> filter = null, string orderBy = null, int index = 1, int size = 20) where TEntity : class
            {
                int skipCount = (index - 1) * size;
                var query = Get(filter, orderBy);
                total = query.Count();
                query = skipCount > 0 ? query.Skip(skipCount).Take(size) : query.Take(size);
                return query.ToList();
            }
    
    public static class QueryExtensions
        {
            public static IQueryable<T> OrderBy<T>(this IQueryable<T> source, string sortExpressions)
            {
                if (source == null)
                {
                    throw new ArgumentNullException("source");
                }
    
                string sortDirection = String.Empty;
                string propertyName = String.Empty;
    
                sortExpressions = sortExpressions.Trim();
    
                string[] sorts = sortExpressions.Split(',');
                for (int i = 0; i < sorts.Length; i++)
                {
                    string sortExpression = sorts[i];
                    int spaceIndex = sortExpression.Trim().IndexOf(" ");
                    if (spaceIndex < 0)
                    {
                        propertyName = sortExpression;
                        sortDirection = "ASC";
                    }
                    else
                    {
                        propertyName = sortExpression.Substring(0, spaceIndex);
                        sortDirection = sortExpression.Substring(spaceIndex + 1).Trim();
                    }
    
                    if (String.IsNullOrEmpty(propertyName))
                    {
                        return source;
                    }
    
                    ParameterExpression parameter = Expression.Parameter(source.ElementType, String.Empty);
                    MemberExpression property = Expression.Property(parameter, propertyName);
                    LambdaExpression lambda = Expression.Lambda(property, parameter);
    
                    string methodName = string.Empty;
                    if (i == 0)
                    {
                        methodName = (sortDirection.ToUpper() == "ASC") ? "OrderBy" : "OrderByDescending";
                    }
                    else
                    {
                        methodName = (sortDirection.ToUpper() == "ASC") ? "ThenBy" : "ThenByDescending";
                    }
    
                    Expression methodCallExpression = Expression.Call(typeof(Queryable), methodName,
                                                        new Type[] { source.ElementType, property.Type },
                                                        source.Expression, Expression.Quote(lambda));
    
                    source = source.Provider.CreateQuery<T>(methodCallExpression);
    
                }
                return source;
    
            }
        }
    
    
    
    
  • 相关阅读:
    Kubernetes滚动更新介绍及使用-minReadySeconds
    Office 365 – SharePoint 2013 Online 与Office相关的应用
    Office 365 – SharePoint 2013 Online 中添加域和域名
    Office 365
    Office 365 – SharePoint 2013 Online 之WebPart开发、部署教程
    Office 365
    Office 365
    信仰坚持!程序员也有春天!
    SharePoint 2013 日历重叠功能简介
    SharePoint 2013 使用 PowerShell 更新用户
  • 原文地址:https://www.cnblogs.com/chenmfly/p/6363829.html
Copyright © 2011-2022 走看看