Я пытаюсь сгенерировать предложение LINQ OrderBy
, используя лямбда-выражения с вводом имени столбца объекта в виде строки (в переменной sortOn ниже ).
Приведенный ниже код отлично работает для значения sortOn, такого как «Код», генерирующего лямбду
p => p.Code
. Но я также хотел бы отсортировать дочерний объект, где лямбда может быть
p => p.Category.Description
Итак, в этом случае я просто хотел бы установить sortOn = "Category.Description" и сгенерировать правильное лямбда-выражение.
Это возможно? Любые предложения о том, как лучше всего это сделать, будут приветствоваться.
Этот код отлично работает для простого случая:
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 в примере ).