Construyendo una expresión OrderBy Lambda basada en la propiedad de la entidad hijo

Estoy tratando de generar un LINQOrderBy cláusula que utiliza expresiones lambda con una entrada del nombre de columna de una entidad como una cadena (en la variable "sortOn" a continuación).

El siguiente código funciona bien para un valor de sortOn como "Código" que genera la lambda

p => p.Code

Pero también me gustaría clasificar en una entidad hijo, donde la lambda podría ser

p => p.Category.Description

Así que en este caso, me gustaría establecer sortOn = "Category.Description" y generar la expresión lamdba correcta.

es posible? Cualquier sugerencia sobre la mejor manera de hacer esto sería bienvenida.

Este código funciona bien para el caso simple:

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);
}

El caso de uso para este problema es mostrar una cuadrícula de datos y poder ordenar los datos, simplemente al pasar el nombre de la columna que se ordenará al servidor. Me gustaría hacer que la solución sea genérica, pero he comenzado a usar un tipo en particular (Producto en el ejemplo) por ahora.

Respuestas a la pregunta(5)

Su respuesta a la pregunta