Я хочу, чтобы иметь возможность добавить упорядочение моих запросов динамически:СЦЕПЛЕНИЕ IQueryable деревья выражений
Expression<Func<IQueryable<MyEntity>, IOrderedQueryable<MyEntity>>> order1 = e => e.OrderBy(x => x.Weight);
Expression<Func<IQueryable<MyEntity>, IOrderedQueryable<MyEntity>>> order2 = e => e.OrderByDescending(x => x.Weight).ThenBy(x => x.Price);
Expression<Func<IQueryable<MyEntity>, IOrderedQueryable<MyEntity>>> order3 = e => e.OrderBy(x => x.Category).ThenBy(x => x.Price);
IQueryable<MyEntity> query = any EF query;
var transformedQuery = query.Transform(order1/order2/order3);
Как реализовать Transform()
?
public static IQueryable<T> Transform<T>(this IQueryable<T> query, Expression<Func<IQueryable<T>, IOrderedQueryable<T>>> orderExpr)
{
// ??????????????????
}
Проблема заключается в том, что я не хочу иметь 2 перегрузки для восходящего/нисходящего порядка. Мне нужно применить любое выражение OrderBy()/OrderByDescending()
или их комбинацию.
Вы не можете добавить первый заказ в AddOrder? –
К сожалению нет, мне нужен общий метод, который будет выполнять другие преобразования после добавления заказа на запрос. – UserControl
В чем проблема с оригинальным OrderBy/ThenBy? Поскольку @hdv сказал, что вам больше ничего не нужно (если я ничего не пропущу ...) –