Я запрашиваю свою базу данных, используя NHibernate. Теперь мне нужно ограничить выбор данных с помощью предиката. До сих пор я узнал (разработка Google в своих лучших проявлениях), что нечто подобное возможно с помощью Expressions и NHibernate.Linq.
Вот что я попробовал:
public IList<Bestellung> GetAll(Predicate<Order> predicate)
{
Expression<Func<Order, bool>> restriction = x => predicate(x);
ISession session = SessionService.GetSession();
IList<Order> bestellungen = session.Query<Order>()
.Where(restriction).ToList();
return bestellungen;
}
В результате Невозможно привести объект типа 'NHibernate.Hql.Ast.HqlCast' к типу 'NHibernate.Hql.Ast.HqlBooleanExpression' . Просто быстренько проверить, где это отстой: измените первую строку тела метода на
Expression<Func<Order, bool>> restriction = x => x.Id!=1;
с потрясающим результатом, что все работает отлично.
Как мне выполнить мой предикат в выражении?