var query = session.QueryOver(() => vehicleAlias)
.Left.JoinAlias(() => vehicleAlias.VehicleRegistrations, () => vehicleRegistrationAlias)
.WithSubquery.WhereProperty(() => vehicleRegistrationAlias.RegistrationExpiryDate).Eq(
QueryOver.Of(() => vehicleRegistrationAlias2)
.Where(() => vehicleRegistrationAlias2.Vehicle.Id == vehicleAlias.Id)
.Select(Projections.Max<VehicleRegistration>(ps => ps.RegistrationExpiryDate)));
query.Left.JoinAlias(() => vehicleRegistrationAlias.VehicleRegistrants, () => vehicleRegistrantAlias)
.Where(() => vehicleRegistrantAlias.Client.Id == clientId);
これは、私が自分の仕事のために書いたばかりのサブクエリであり、書くのに時間がかかりました。具体的に何を求めているのかわかりませんが、サンプルをご紹介します。ご不明な点がございましたら、お気軽にお問い合わせください。
.Select(Projections.Max(ps => ps.RegistrationExpiryDate)))この行は、サブクエリのすべての作業を実行します。最新の車両登録を選択します。車両登録エイリアス2は、サブクエリとしてクエリされるオブジェクトです。
したがって、これにより、車両の現在の車両登録のみが引き戻されます。1台の車両に多数の車両登録がある場合があります。その.Selectステートメントは、.OrderById.Desc.SelectTop(1)などに変更できます。
この編集がお役に立てば幸いです。