Создание лямбда-выражения OrderBy на основе свойства дочерней сущности
Я пытаюсь сгенерировать LINQOrderBy
предложение с использованием лямбда-выражений с вводом имени столбца сущности в виде строки (в переменной «quot; sortOn» ниже).
Приведенный ниже код отлично работает для значения sortOn, например & quot; Код & quot; генерируя лямбду
p => p.Code
Но я также хотел бы отсортировать по дочернему объекту, где лямбда может быть
p => p.Category.Description
Так что в этом случае я просто хотел бы установить sortOn = & Category.escription & quot; и иметь правильное выражение lamdba.
Это возможно? Любые предложения о том, как это сделать, будут приветствоваться.
Этот код отлично работает для простого случая:
var param = Expression.Parameter(typeof (Product), "p");
var sortExpression = Expression.Lambda<Func<Product, object>>(
Expression.Property(param, sortOn), param);
if (sortAscending ?? true)
{
products = products.OrderBy(sortExpression);
}
else
{
products = products.OrderByDescending(sortExpression);
}
Вариант использования для этой проблемы - отображение сетки данных и возможность сортировки данных, просто передавая имя столбца для сортировки обратно на сервер. Я хотел бы сделать решение универсальным, но сейчас начал использовать конкретный тип (в данном примере Product).