Создание лямбда-выражения 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).

Ответы на вопрос(5)

Ваш ответ на вопрос