I want to use sorting with linq. From parameter name I am getting back sorting
Code:
private static Expression<Func<T, object>> CreateOrderPredicate2<T>(string member)
{
member = member.FirstLetterToUpper();
var propertyInfo = typeof(T).GetProperty(member);
if (propertyInfo == null)
{
throw new ArgumentException($"Property '{member}' not found on type {typeof(T)}");
}
ParameterExpression parameter = Expression.Parameter(typeof(T), "x");
Expression<Func<T, object>> lambda = Expression.Lambda<Func<T, object>>(Expression.Convert(Expression.Property(parameter, propertyInfo),typeof(object)), parameter);
return lambda;
}
then I am reading this
Expression<Func<MarketVolumeChange, object>> expression = orderExpression.Key;
switch (orderExpression.Value)
{
case Ordering.Asc:
changeQuery = changeQuery.OrderBy(expression);
break;
case Ordering.Desc:
changeQuery = changeQuery.OrderByDescending(expression);
break;
default:
throw new ArgumentOutOfRangeException();
}
and then I get error
System.NotSupportedException occurred HResult=0x80131515
Message=Unable to cast the type 'System.DateTime' to type 'System.Object'. LINQ to Entities only supports casting EDM primitive or enumeration types. Source= StackTrace:
Problem is that I know parameter name but not a type that way I am using Object in CreateOrderPredicate2 method
Is there a possibility to detect parameter type also?
User contributions licensed under CC BY-SA 3.0