相关疑难解决方法(0)

如何附加到表达式

根据我昨天提出的问题:

如果我必须附加到我现有的'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)

或类似的东西

.net c# linq

40
推荐指数
4
解决办法
2万
查看次数

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

我正在使用以下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".

我究竟做错了什么?

.net c# sql nhibernate

5
推荐指数
1
解决办法
3106
查看次数

标签 统计

.net ×2

c# ×2

linq ×1

nhibernate ×1

sql ×1