A
Andrus
My entity contains properties which are different only by case.
I tried to use Marc Dynamic Order but in this case line in method
UtilityOrderBy<T>()
MemberExpression member = Expression.Property(param, propertyName);
causes AmbiguousMatchException
How to change method below so that
Expression.Property(param, propertyName)
does not ignore case ?
Should I get PropertyInfo from T and use Property() overload with takes
PropertyInfo parameter ?
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 causes Ambiguous match exception :
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);
}
I tried to use Marc Dynamic Order but in this case line in method
UtilityOrderBy<T>()
MemberExpression member = Expression.Property(param, propertyName);
causes AmbiguousMatchException
How to change method below so that
Expression.Property(param, propertyName)
does not ignore case ?
Should I get PropertyInfo from T and use Property() overload with takes
PropertyInfo parameter ?
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 causes Ambiguous match exception :
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);
}