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):
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.
var body = Expression.Convert(Expression.Property(param, sortKey), typeof(object));
var sortExpression = Expression.Lambda>(body, param);
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:
Expression body = Expression.Property(param, sortKey);
if(body.Type.IsValueType)
body = Expression.Convert(body, typeof(object));