A
Andrus
I tried Marc dynamic query ordering method to retrieve customer name
property from order like
UtilityOrderBy<Order>( db.Orders, "Order.CustomerId.CustomerName",
doOrderBy );
but got error in line
MemberExpression member = Expression.Property(param, propertyName);
since Expression.Property does not allow to reference to Customer property.
How to change this method so that it can order by
Order.CustomerId.CustomerName property ?
Andrus.
static IOrderedQueryable<T> UtilityOrderBy<T>(
IQueryable<T> query, string propertyName, MethodInfo method)
{
// crete a property-getter expression
ParameterExpression param = Expression.Parameter(typeof(T),
"p");
// this line does not allow child properties:
MemberExpression member = Expression.Property(param,
propertyName);
object[] reflArgs = { query, member, param };
// invoke the specified method (for the appropriatePropertyType)
return (IOrderedQueryable<T>)method.MakeGenericMethod(
typeof(T), ((PropertyInfo)member.Member).PropertyType)
.Invoke(null, reflArgs);
}
property from order like
UtilityOrderBy<Order>( db.Orders, "Order.CustomerId.CustomerName",
doOrderBy );
but got error in line
MemberExpression member = Expression.Property(param, propertyName);
since Expression.Property does not allow to reference to Customer property.
How to change this method so that it can order by
Order.CustomerId.CustomerName property ?
Andrus.
static IOrderedQueryable<T> UtilityOrderBy<T>(
IQueryable<T> query, string propertyName, MethodInfo method)
{
// crete a property-getter expression
ParameterExpression param = Expression.Parameter(typeof(T),
"p");
// this line does not allow child properties:
MemberExpression member = Expression.Property(param,
propertyName);
object[] reflArgs = { query, member, param };
// invoke the specified method (for the appropriatePropertyType)
return (IOrderedQueryable<T>)method.MakeGenericMethod(
typeof(T), ((PropertyInfo)member.Member).PropertyType)
.Invoke(null, reflArgs);
}