예제 #1
0
 protected string CreateOrderBySql(IQueryOrderBy orderBy, QueryBuildInfo buildInfo)
 {
     if (orderBy != null)
     {
         return(((IAbstractOrderBy)orderBy).CreateSql(_dbLayer, buildInfo));
     }
     return("/*Incorrect Order by*/");
 }
예제 #2
0
 public ISelectionQuery OrderBy(IQueryOrderBy queryOrderBy)
 {
     Structure.OrderList.Add(queryOrderBy);
     return(this);
 }
예제 #3
0
        public static IQueryable <TSource> Order <TSource>(this IQueryable <TSource> query, IQueryOrderBy queryOrderBy)
        {
            if (string.IsNullOrEmpty(queryOrderBy.OrderByField))
            {
                return(query);
            }
            var prop = typeof(TSource).GetProperties().ToList().FirstOrDefault(a => a.Name.Equals(queryOrderBy.OrderByField, StringComparison.OrdinalIgnoreCase));

            if (prop == null)
            {
                return(query);
            }
            var orderMethodName = queryOrderBy.OrderBySort == ESort.Asc ? "OrderBy" : "OrderByDescending";
            var param           = Expression.Parameter(typeof(TSource));
            var types           = new List <Type> {
                typeof(TSource), prop.PropertyType
            };
            Expression expr = Expression.Call(typeof(Queryable), orderMethodName, types.ToArray(), query.Expression, Expression.Lambda(Expression.Property(param, prop.Name), param));

            query = query.AsQueryable().Provider.CreateQuery <TSource>(expr);
            return(query);
        }