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