我正在使用一个 NHibernate 项目,该项目有一个返回 IQuery 对象的方法。我想找到具有特定颜色的最古老的汽车。
目前,仅当您正确指定颜色(或根本不指定颜色)时,它才会返回最旧的汽车。
我可以大致看出我做错了什么(我正在获取整个表的 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;
}