日期:2014-05-17  浏览次数:21085 次

类型为“System.DateTime”的表达式不能用于返回类型“System.Object”
本帖最后由 ZIP_xG 于 2013-01-14 22:32:00 编辑
Linq
var parameter = Expression.Parameter(typeof(TEntity), "t");
var express = Expression.Lambda<Func<TEntity, object>>(Expression.Property(parameter, property), parameter);

出现错误
类型为“System.DateTime”的表达式不能用于返回类型“System.Object”
property是TEntity中的某个属性
当property不是值类型,比如string类型的时候
就不出错
但是当property是值类型,比如DateTime类型的时候就出错了
因为这个属性是根据属性名动态指定的
所以在Func<TEntity, ?? >这里,只有填object才行

后面需要用到OrderBy(express)

如何解决?

------解决方案--------------------
var parameter = Expression.Parameter(typeof(TEntity), "t");
var express = Expression.Lambda<Func<TEntity, object>>(Expression.Convert(Expression.Property(parameter, property), typeof(object)), parameter);