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