2
我正在使用一个有返回IQuery对象的方法的NHibernate项目。 我想找到具有特定颜色的最古老的汽车。从Nhibernate获取最大值IQueryOver
目前只有当您指定颜色正确(或根本不指定颜色)时才会返回最旧的汽车。
我大致可以看到我做错了什么(我正在为整个表格获取maxAge,然后将其作为对现有IQueryOver的限制进行添加)。
如何更改代码以仅为现有IQueryOver获取最大年龄?
private IQueryOver GetFilteredQuery()
{
var query = Session.QueryOver<Car>();
if (this.Colour != nulI)
{
query.Where(x => x.Colour == this.Colour));
}
if (this.GetOldestCar == true)
{
QueryOver<Car> maxAge= QueryOver.Of<Car>()
.SelectList(c => c.SelectMax(x => x.Age));
query.Where(Subqueries.WhereProperty<Car>(i => i.Age).Eq(maxAge));
}
return query;
}
谢谢,只是改变了最后,如果子句 query.OrderBy(X => x.Age).Desc()取(1)。 它工作的一种享受。 – openshac