我们有一个查询来选择行取决于另一个值,即。最大。我不认为这是真的有道理,所以这里是查询:当一个属性等于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