System.Int16'不能用于返回类型'System.Object'
本文关键字:System Object 返回类型 不能 Int16 用于 | 更新日期: 2023-09-27 18:12:31
public IQueryable<Users> SelectAdmin<TProp>(string sSortExpression, string sSortOrder ,long[] IAds, int iStart, int iEnd, long iId)
{
var param = Expression.Parameter(typeof(Users));
var propExpression = Expression.Lambda<Func<Users, TProp>>(Expression.Property(param, sSortExpression), param);
if (sSortOrder == "asc")
{
return objCouponUow.Repository<Users>().Entities.Where(x => x.UserGroup == 9 && x.Validate == 0 && x.Deleted == false && IAds.Contains(x.UserParent)).OrderBy(propExpression).Skip(iStart).Take(iEnd - iStart);
}
}
这是我的功能…我得到的错误行:
var propExpression = Expression.Lambda<Func<Users, TProp>>(Expression.Property(param, sSortExpression), param);
当'sSortExpression'这是一个列在用户表是Varchar类型,没有问题,但如果它的Int类型..发生错误System类型的表达式。Int16'不能用于返回类型'System '。对象'
如何纠正这个问题?
这里的问题是<Tprop>
不是Int16
类型的字符串,您正在传递的是Int16
类型的列名
您可以在调用SelectAdmin<TProp>
函数时简单地指定<Tprop>
。
例如:
`SelectAdmin<int>(.......your parameters here);`
如果sSortExpression的类型是int16。如果是DateTime
类型,可以这样调用
SelectAdmin<DateTime>(.......your parameters here);
碰巧你没有分配一个对象(sSortExpression),因为你说它是一个列,也许你分配项目对象集合为int,所以得到错误