首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

类型为“System.DateTime”的表达式不能用于返回类型“System.Object”解决方法

2013-01-25 
类型为“System.DateTime”的表达式不能用于返回类型“System.Object”本帖最后由 ZIP_xG 于 2013-01-14 22:32

类型为“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);

热点排行