using PoweredSoft.DynamicLinq.Fluent; using PoweredSoft.DynamicLinq.Helpers; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace PoweredSoft.DynamicLinq.Extensions { public static class QueryableExtensions { public static IQueryable Where(this IQueryable query, string path, ConditionOperators conditionOperator, object value, QueryConvertStrategy convertStrategy = QueryConvertStrategy.ConvertConstantToComparedPropertyOrField) { query = query.Query(qb => qb.Compare(path, conditionOperator, value, convertStrategy: convertStrategy)); return query; } public static IQueryable Query (this IQueryable query, Action> callback) { var queryBuilder = new QueryBuilder(query); callback(queryBuilder); var ret = queryBuilder.Build(); return ret; } public static IQueryable Sort(this IQueryable query, string path, SortOrder sortOrder, bool appendSort) { var qb = new QueryBuilder(query); qb.Sort(path, sortOrder, appendSort); var ret = qb.Build(); return ret; } public static IQueryable OrderBy(this IQueryable query, string path) { var qb = new QueryBuilder(query); qb.OrderBy(path); var ret = qb.Build(); return ret; } public static IQueryable OrderByDescending(this IQueryable query, string path) { var qb = new QueryBuilder(query); qb.OrderByDescending(path); var ret = qb.Build(); return ret; } public static IQueryable ThenBy(this IQueryable query, string path) { var qb = new QueryBuilder(query); qb.ThenBy(path); var ret = qb.Build(); return ret; } public static IQueryable ThenByDescending(this IQueryable query, string path) { var qb = new QueryBuilder(query); qb.ThenByDescending(path); var ret = qb.Build(); return ret; } } }