コード例 #1
0
        /// <summary>
        /// Adds number of items to take.
        /// </summary>
        /// <typeparam name="TEntity">Type of items.</typeparam>
        /// <param name="query">Query to add to.</param>
        /// <param name="take">Number of items to take.</param>
        /// <returns>New query.</returns>
        public static IODataQueryable <TEntity> Take <TEntity>(this IODataQueryable <TEntity> query, int take)
        {
            var result = query.Clone();

            result.Take = take;
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// Adds number items to skip.
        /// </summary>
        /// <typeparam name="TEntity">Type of items.</typeparam>
        /// <param name="query">Query to add to.</param>
        /// <param name="skip">Number of items to skip.</param>
        /// <returns>New query.</returns>
        public static IODataQueryable <TEntity> Skip <TEntity>(this IODataQueryable <TEntity> query, int skip)
        {
            var result = query.Clone();

            result.Skip = skip;
            return(result);
        }
コード例 #3
0
        /// <summary>
        /// Adds property as descending order.
        /// </summary>
        /// <typeparam name="TEntity">Type of items.</typeparam>
        /// <param name="query">Query to add to.</param>
        /// <param name="expression">Property expression.</param>
        /// <returns>New query.</returns>
        public static IODataQueryable <TEntity> OrderByDescending <TEntity>(
            this IODataQueryable <TEntity> query,
            Expression <Func <TEntity, object> > expression)
        {
            var result = query.Clone();

            result.Order.Add(GetPropertyName(expression) + " desc");
            return(result);
        }
コード例 #4
0
        /// <summary>
        /// Set selected properties.
        /// </summary>
        /// <typeparam name="TEntity">Type of items.</typeparam>
        /// <param name="query">Query to add to.</param>
        /// <param name="select">Column names.</param>
        /// <returns>New query.</returns>
        public static IODataQueryable <TEntity> Select <TEntity>(
            this IODataQueryable <TEntity> query,
            IEnumerable <string> select)
        {
            var result = query.Clone();

            result.Select.AddRange(select);

            return(result);
        }
コード例 #5
0
        /// <summary>
        /// Adds order columns by name.
        /// </summary>
        /// <typeparam name="TEntity">Type of items.</typeparam>
        /// <param name="query">Query to add to.</param>
        /// <param name="order">Column names.</param>
        /// <returns>New query.</returns>
        public static IODataQueryable <TEntity> OrderBy <TEntity>(
            this IODataQueryable <TEntity> query,
            IEnumerable <string> order)
        {
            var result = query.Clone();

            result.Order.AddRange(order);

            return(result);
        }
コード例 #6
0
        /// <summary>
        /// Filter condition.
        /// </summary>
        /// <typeparam name="TEntity">Type of items.</typeparam>
        /// <param name="query">Query to add to.</param>
        /// <param name="expression">Conditional expression.</param>
        /// <returns>New query.</returns>
        public static IODataQueryable <TEntity> Where <TEntity>(
            this IODataQueryable <TEntity> query,
            Expression <Func <TEntity, bool> > expression)
        {
            var result = query.Clone();

            result.Filter = query.Filter == null
                                ? $"({query.Context.FilterMaker.MakeFilter(expression)})"
                                : $"{query.Filter} and ({query.Context.FilterMaker.MakeFilter(expression)})";

            return(result);
        }