IQuery オブジェクトを返すメソッドを持つ NHibernate プロジェクトを使用しています。特定の色の最も古い車を見つけたいです。
現時点では、色を正しく指定した (またはまったく指定しなかった) 場合にのみ、最も古い車が返されます。
私が間違っていることを大まかに見ることができます (テーブル全体の 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;
}