我們有一個查詢來選擇行取決於另一個值,即。最大。我不認爲這是真的有道理,所以這裏是查詢:當一個屬性等於Max時使用NHibernate選擇對象
var deatched = DetachedCriteria.For<Enquiry>("e2")
.SetProjection(Projections.Alias(Projections.Max("Property"), "maxProperty"))
.Add(Restrictions.EqProperty("e2.EnquiryCode", "e.EnquiryCode"));
session.CreateCriteria(typeof(Enquiry), "e")
.Add(Subqueries.PropertyEq("Property", deatched))
.AddOrder(Order.Asc("EnquiryCode"));
我的問題是,這是最好的方式?任何人都可以提出更好的方法?
我認爲這是最好的辦法。 在SQL中,你會寫: SELECT e。* from e WHERE e.Property =(SELECT MAX(e2.Property)WHERE e2.EnquiryCode = e.EnquiryCode) 這就是你在HQL中所做的一切。 – 2008-12-12 15:19:43
謝謝,這幫助我解決了類似的問題(即使你沒有答案!) – PandaWood 2011-03-18 06:18:37