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;
    
            }
        }
    
    
    
    
  • 相关阅读:
    WWF中关于External Data Exchange Service的错误
    通用异常处理框架(转载)
    追MM和23种设计模式(转载)
    编译:XAML与程序代码结合(转载)
    异步编程*(转载)
    出糗~又是工作流!
    由WorkflowOwnershipException 异常,联想出的部署犯案
    Nullable类型,C#溢出检查,typeof运算符和运算符的重载 分类: C# 20121028 19:50 648人阅读 评论(0) 收藏
    我的程序员之路(九)参加郑州微软MVP宣讲会后的一些思考
    C#结构的学习
  • 原文地址:https://www.cnblogs.com/chenmfly/p/6363829.html
Copyright © 2011-2022 走看看