根据我昨天提出的问题:
如果我必须附加到我现有的'where'表达式,我将如何追加?
Expression<Func<Client, bool>> clientWhere = c => true;
if (filterByClientFName)
{
clientWhere = c => c.ClientFName == searchForClientFName;
}
if (filterByClientLName)
{
clientWhere = c => c.ClientLName == searchForClientLName;
}
Run Code Online (Sandbox Code Playgroud)
用户可以输入名字或姓氏或两者.如果他们同时输入我想附加到表达式.试着看看是否有相当于我可以做的追加
clientWhere.Append or clientWhere += add new expression
Run Code Online (Sandbox Code Playgroud)
或类似的东西
我正在使用以下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".
我究竟做错了什么?