【发布时间】:2012-08-11 17:40:03
【问题描述】:
我正在尝试通过聚合其集合的属性(NHibernate 3.2.0)来对查询进行排序。
示例如下:
CurrentSession.CreateCriteria<Note>()
.Add(Subqueries.PropertyIn("Id",
DetachedCriteria.For<SubNote>()
.SetProjection(Projections.ProjectionList()
.Add(Projections.Alias(Projections.Max("Date"), "maxDate")))
.AddOrder(Order.Desc("maxDate")))
.List<Note>();
这不起作用,它说“Note”中没有属性“maxDate”
我想要的是在它收集 SubNote 的最大日期之前订购 Note。
谢谢!
解决方案
var subQuery = DetachedCriteria
.For<SubNote>("sn")
.SetProjection(
Projections.Alias(Projections.Max("Date"), "maxDate"))
.Add(Restrictions.EqProperty("Note.Id", "n.Id"));
var results = CurrentSession.CreateCriteria<Note>("n")
.AddOrder(Order.Desc(Projections.SubQuery(subQuery)))
.List<Note>();
【问题讨论】:
标签: c# nhibernate criteria