I've created an expression that I'm using for sorting which works fine, until I hit a DateTime
field, where I get the following error (on the second line):
Expression of type 'System.DateTime' cannot be used for return type 'System.Object'
Here's my code:
ParameterExpression param = Expression.Parameter(typeof(MyEntity), "x");
Expression<Func<MyEntity, object>> sortExpression =
Expression.Lambda<Func<AMyEntity, object>>(
Expression.Property(param, sortKey), param);
Can anyone help at all?
Just add a conversion in there:
You appear to be expecting auto-boxing of value-types to match the return-type of the expression. Unfortunately,
Expression.Lambda
does not do this.You can use
Expression.Convert
to perform the boxing.If for some reason you don't want the conversion operation to be present in the expression if the property is already a reference-type, you can branch as required: