order by is refactored to not force generics anymore.

This commit is contained in:
David Lebée
2018-03-14 18:50:43 -05:00
parent d6265c3b8d
commit c4a398a8cb
8 changed files with 75 additions and 109 deletions
@@ -20,8 +20,8 @@ namespace PoweredSoft.DynamicLinq
public static IEnumerable<T> Query<T>(this IEnumerable<T> list, Action<WhereBuilder<T>> callback)
=> list.AsQueryable().Query(callback);
public static IEnumerable<T> Sort<T>(this IEnumerable<T> list, string path, QuerySortDirection sortDirection, bool appendSort)
=> list.AsQueryable().Sort(path, sortDirection, appendSort);
public static IEnumerable<T> Sort<T>(this IEnumerable<T> list, string path, QueryOrderByDirection sortDirection, bool appendSort)
=> list.AsQueryable().OrderBy(path, sortDirection, appendSort);
public static IEnumerable<T> OrderBy<T>(this IEnumerable<T> list, string path)
=> list.AsQueryable().OrderBy(path);
@@ -30,46 +30,48 @@ namespace PoweredSoft.DynamicLinq
return ret;
}
public static IQueryable<T> Sort<T>(this IQueryable<T> query, string path, QuerySortDirection sortDirection, bool appendSort)
// generic.
public static IQueryable<T> OrderBy<T>(this IQueryable<T> query, string path, QueryOrderByDirection direction, bool append)
{
var qb = new OrderByBuilder<T>(query);
qb.Sort(path, sortDirection, appendSort);
var ret = qb.Build();
return ret;
IQueryable queryable = query;
query = queryable.OrderBy(path, direction, append) as IQueryable<T>;
return query;
}
public static IQueryable<T> OrderBy<T>(this IQueryable<T> query, string path)
{
var qb = new OrderByBuilder<T>(query);
qb.OrderBy(path);
var ret = qb.Build();
return ret;
}
=> query.OrderBy(path, QueryOrderByDirection.Ascending, false);
public static IQueryable<T> OrderByDescending<T>(this IQueryable<T> query, string path)
{
var qb = new OrderByBuilder<T>(query);
qb.OrderByDescending(path);
var ret = qb.Build();
return ret;
}
=> query.OrderBy(path, QueryOrderByDirection.Descending, false);
public static IQueryable<T> ThenBy<T>(this IQueryable<T> query, string path)
{
var qb = new OrderByBuilder<T>(query);
qb.ThenBy(path);
var ret = qb.Build();
return ret;
}
=> query.OrderBy(path, QueryOrderByDirection.Ascending, true);
public static IQueryable<T> ThenByDescending<T>(this IQueryable<T> query, string path)
=> query.OrderBy(path, QueryOrderByDirection.Descending, true);
// non generic.
public static IQueryable OrderBy(this IQueryable query, string path, QueryOrderByDirection direction, bool append)
{
var qb = new OrderByBuilder<T>(query);
qb.ThenByDescending(path);
var qb = new OrderByBuilder(query);
qb.OrderBy(path, direction, append);
var ret = qb.Build();
return ret;
}
public static IQueryable OrderBy(this IQueryable query, string path)
=> query.OrderBy(path, QueryOrderByDirection.Ascending, false);
public static IQueryable OrderByDescending(this IQueryable query, string path)
=> query.OrderBy(path, QueryOrderByDirection.Descending, false);
public static IQueryable ThenBy(this IQueryable query, string path)
=> query.OrderBy(path, QueryOrderByDirection.Ascending, true);
public static IQueryable ThenByDescending(this IQueryable query, string path)
=> query.OrderBy(path, QueryOrderByDirection.Descending, true);
// group by
public static IQueryable GroupBy<T>(this IQueryable<T> query, string path)
=> QueryableHelpers.GroupBy(query, typeof(T), path);