コード例 #1
0
 public static IEnumerable <TEntity> Order <TEntity, TKey>(
     this IEnumerable <TEntity> source, Func <TEntity, TKey> keySelector, OrderDirectionEnum sort)
 {
     return(sort == OrderDirectionEnum.ASC
         ? source.OrderBy(keySelector)
         : source.OrderByDescending(keySelector));
 }
コード例 #2
0
 public OrderByItemSegment(int startIndex, int stopIndex, OrderDirectionEnum orderDirection, OrderDirectionEnum nullOrderDirection)
 {
     _startIndex         = startIndex;
     _stopIndex          = stopIndex;
     _orderDirection     = orderDirection;
     _nullOrderDirection = nullOrderDirection;
 }
コード例 #3
0
        public override IASTNode VisitOrderByItem(SqlServerCommandParser.OrderByItemContext context)
        {
            OrderDirectionEnum orderDirection = null != context.DESC() ? OrderDirectionEnum.DESC : OrderDirectionEnum.ASC;

            if (null != context.columnName())
            {
                ColumnSegment column = (ColumnSegment)Visit(context.columnName());
                return(new ColumnOrderByItemSegment(column, orderDirection));
            }
            if (null != context.numberLiterals())
            {
                return(new IndexOrderByItemSegment(context.numberLiterals().Start.StartIndex, context.numberLiterals().Stop.StopIndex,
                                                   (int)SqlUtil.GetExactlyNumber(context.numberLiterals().GetText(), 10), orderDirection));
            }
            return(new ExpressionOrderByItemSegment(context.expr().Start.StartIndex, context.expr().Stop.StopIndex, context.expr().GetText(), orderDirection));
        }
コード例 #4
0
 public static int CompareTo(IComparable thisValue, IComparable otherValue, OrderDirectionEnum orderDirection, OrderDirectionEnum nullOrderDirection, bool caseSensitive)
 {
     if (null == thisValue && null == otherValue)
     {
         return(0);
     }
     if (null == thisValue)
     {
         return(orderDirection == nullOrderDirection ? -1 : 1);
     }
     if (null == otherValue)
     {
         return(orderDirection == nullOrderDirection ? 1 : -1);
     }
     if (!caseSensitive && thisValue is string && otherValue is string)
     {
         return(CompareToCaseInsensitiveString((string)thisValue, (string)otherValue, orderDirection));
     }
     return(OrderDirectionEnum.ASC == orderDirection?thisValue.CompareTo(otherValue) : -thisValue.CompareTo(otherValue));
 }
コード例 #5
0
        /// <summary>
        /// Order <see cref="IOrderedQueryable{TSource}"/> then by
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <param name="source"></param>
        /// <param name="sortColum">name of the column to sort on</param>
        /// <param name="orderDirection"><see cref="OrderDirectionEnum"/></param>
        /// <returns></returns>
        public static IOrderedQueryable <TSource> ThenBy <TSource>(this IOrderedQueryable <TSource> source, string sortColum, OrderDirectionEnum orderDirection)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            return(OrderByInternal.QueryableOrderThenBy(source, new OrderItem {
                SortColum = sortColum, OrderDirection = orderDirection
            }));
        }
コード例 #6
0
        /// <summary>
        /// Order an <see cref="IEnumerable{TSource}"/>
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <param name="source"></param>
        /// <param name="sortColum">name of the column to sort on</param>
        /// <param name="orderDirection"><see cref="OrderDirectionEnum"/></param>
        /// <returns></returns>
        public static IOrderedEnumerable <TSource> OrderBy <TSource>(this IEnumerable <TSource> source, string sortColum, OrderDirectionEnum orderDirection)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            if (string.IsNullOrWhiteSpace(sortColum))
            {
                throw new ArgumentException("Input cannot be null or empty", "sortColum");
            }

            return(OrderByInternal.EnumerableOrder(source, new OrderItem {
                SortColum = sortColum, OrderDirection = orderDirection
            }, out _));
        }
コード例 #7
0
        private static int CompareToCaseInsensitiveString(string thisValue, string otherValue, OrderDirectionEnum orderDirection)
        {
            int result = String.Compare(thisValue.ToUpper(), otherValue.ToUpper(), StringComparison.Ordinal);

            return(OrderDirectionEnum.ASC == orderDirection ? result : -result);
        }
コード例 #8
0
 protected TextOrderByItemSegment(int startIndex, int stopIndex, OrderDirectionEnum orderDirection, OrderDirectionEnum nullOrderDirection)
     : base(startIndex, stopIndex, orderDirection, nullOrderDirection)
 {
 }
コード例 #9
0
ファイル: UserDB.cs プロジェクト: MilanaBeric/UserMS
 public static List <User> GetUsers(string userTypes, string userName, ActiveStateEnum active, int?pageNumber, int?pageSize,
                                    UserOrderEnum order, OrderDirectionEnum orderDirection)
 {
     return(usersInMemory);
 }
コード例 #10
0
 /// <summary>
 /// Sort Alphanumeric as Alphanumeric and numeric as numeric
 /// </summary>
 public NaturalSortComparer()
 {
     _orderDirection = OrderDirectionEnum.Ascending;
 }
コード例 #11
0
 public IndexOrderByItemSegment(int startIndex, int stopIndex, int columnIndex, OrderDirectionEnum orderDirection)
     : base(startIndex, stopIndex, orderDirection, OrderDirectionEnum.ASC)
 {
     this._columnIndex = columnIndex;
 }
コード例 #12
0
 public ColumnOrderByItemSegment(ColumnSegment column, OrderDirectionEnum orderDirection)
     : base(column.GetStartIndex(), column.GetStopIndex(), orderDirection, OrderDirectionEnum.ASC)
 {
     this._column = column;
 }
コード例 #13
0
 public ExpressionOrderByItemSegment(int startIndex, int stopIndex, string expression, OrderDirectionEnum orderDirection, OrderDirectionEnum nullOrderDirection) : base(startIndex, stopIndex, orderDirection, nullOrderDirection)
 {
     _expression = expression;
 }
コード例 #14
0
 public ExpressionOrderByItemSegment(int startIndex, int stopIndex, string expression, OrderDirectionEnum orderDirection) : this(startIndex, stopIndex, expression, orderDirection, OrderDirectionEnum.ASC)
 {
 }
コード例 #15
0
        /// <summary>
        /// Order <see cref="IOrderedQueryable{TSource}"/> then by
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <typeparam name="TKey"></typeparam>
        /// <param name="source"></param>
        /// <param name="sortColum"></param>
        /// <param name="orderDirection"><see cref="OrderDirectionEnum"/></param>
        /// <param name="comparer"><see cref="IComparer{TKey}" /></param>
        /// <returns></returns>
        public static IOrderedQueryable <TSource> ThenBy <TSource, TKey>(this IOrderedQueryable <TSource> source, string sortColum, OrderDirectionEnum orderDirection, IComparer <TKey> comparer)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            if (string.IsNullOrWhiteSpace(sortColum))
            {
                throw new ArgumentException("Input cannot be null or empty", "sortColum");
            }

            return(OrderByInternal.QueryableOrderThenBy(source, new OrderItem <TKey> {
                SortColum = sortColum, OrderDirection = orderDirection, Comparer = comparer
            }));
        }
コード例 #16
0
        public async Task <PagedData <T> > PageAsync(ISpecification <T> specification, int pageIndex, int pageSize, string sortBy = null, OrderDirectionEnum sortDirection = OrderDirectionEnum.OrderBy)
        {
            var pagedData = new PagedData <T>();

            var query = specification.HasPredicate ? specification.Prepare(Query()) : Query();

            if (!string.IsNullOrEmpty(sortBy))
            {
                var parameter         = Expression.Parameter(typeof(T), "p");
                var property          = typeof(T).GetProperty(sortBy);
                var propertyAccess    = Expression.MakeMemberAccess(parameter, property);
                var orderByExpression = Expression.Lambda(propertyAccess, parameter);

                Expression resultExpression = Expression.Call(typeof(Queryable), sortDirection.ToString(), new Type[] { typeof(T), property.PropertyType }, query.Expression, Expression.Quote(orderByExpression));
                query = query.Provider.CreateQuery <T>(resultExpression);
            }

            var queryProjected = query.Skip(pageIndex * pageSize).Take(pageSize);

            pagedData.TotalCount = await CountAsync(specification);

            pagedData.Data = await queryProjected.ToListAsync();

            return(pagedData);
        }
コード例 #17
0
 /// <summary>
 /// Sort Alphanumeric as Alphanumeric and numeric as numeric
 /// </summary>
 /// <param name="isDescending">Is the order direction descending</param>
 public NaturalSortComparer(bool isDescending)
 {
     _orderDirection = Orderby.GetOrderDirection(isDescending);
 }
コード例 #18
0
ファイル: FilterOrder.cs プロジェクト: weedkiller/ArkCrm
 public FilterOrder(string fieldName, OrderDirectionEnum order)
 {
     FieldName      = fieldName;
     OrderDirection = order;
 }
コード例 #19
0
 /// <summary>
 /// Sort Alphanumeric as Alphanumeric and numeric as numeric
 /// </summary>
 /// <param name="orderDirection"><see cref="OrderDirectionEnum"/></param>
 public NaturalSortComparer(OrderDirectionEnum orderDirection)
 {
     _orderDirection = orderDirection;
 }