无法将'NHibernate.Hql.Ast.HqlCast'类型的对象强制转换为'NHibernate.Hql.Ast.HqlBooleanExpression

Ela*_*da2 5 .net c# sql nhibernate

我正在使用以下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();
    }
}
Run Code Online (Sandbox Code Playgroud)

更新: 即使是以下代码也会引发相同的异常:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

得到Nh错误:

无法将"NHibernate.Hql.Ast.HqlCast"类型的对象强制转换为"NHibernate.Hql.Ast.HqlBooleanExpression".

我究竟做错了什么?

Ela*_*da2 6

问题是我在表达式中写了一个短条件:as((a == null)?true:a> b)NH转换失败了(?)