我正在使用以下c#代码:
public IList<T> GetAllByExpression(Expression<Func<T, bool>> expression, int startIndex, int count, Func<T, DateTime> dateTimeSelector) { using (ISession session = NHibernateHelper.GetSession()) { return session.Query<T>() .Where(expression) .OrderBy(dateTimeSelector) .Skip(startIndex - 1) .Take(count) .ToList(); } }
更新: 即使下面的代码也会引发相同的异常:
public IList<T> GetAllByExpression(Expression<Func<T, bool>> expression, int startIndex, int count, Expression<Func<T, DateTime>> dateTimeSelector) { using (ISession session = NHibernateHelper.GetSession()) { return session.Query<T>() .Where(expression) //.OrderBy(dateTimeSelector) //.Skip(startIndex - 1) //.Take(count) .ToList(); } }
并得到Nh错误:
无法将类型为“ NHibernate.Hql.Ast.HqlCast”的对象强制转换为类型为“ NHibernate.Hql.Ast.HqlBooleanExpression”的对象。
我究竟做错了什么?
问题是我在表达式中写了简短条件:as(((a == null)?true:a> b)NH在该(?)上转换失败