/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }