我想要实现的是基于一些其他参数的搜索查询修改。我有一个产品上限列表。如果为产品设置了限制参数,则应将其用作上限。如果未设置,则将使用产品当前值作为上限(以便它将全部通过)。
代码如下所示:
subquery.WhereRestrictionOn(p => p.SomeNumberValue).IsNotNull().IsBetween(0).And(
Projections.Conditional(
Restrictions.On(() => alias.ProductId).IsIn(_limits),
Projections.Property<SearchItems>(x => _limits.Where(y => y.ProductID == x.ProductId).FirstOrDefault().NewUpperLimit),
Projections.Property<SearchItems>(p => p.SomeNumberValue)
)
);
其中:
当我启动它时会抛出异常:不能直接使用 - 在QueryOver表达式中使用。
我不确定我是否完全理解这个问题,但...... 我的问题是:如何将像Projection这样的nHibernate类指向存储在一个通用List of CustomObjects中的值?
答案 0 :(得分:1)
Projections.Property
期望在lambda表达式中选择属性,例如p => p.SomeNumberValue
。
当_limits
来自视图时,您应该加入查询中的视图。无论如何,列表作为查询中的参数可能是一个问题,因为项目作为单独的参数传递给数据库,并且参数的数量有限制。