C# NHibernate-分离条件中集合属性的最大顺序()

C# NHibernate-分离条件中集合属性的最大顺序(),c#,nhibernate,criteria,C#,Nhibernate,Criteria,我试图通过集合属性的聚合对查询进行排序(NHibernate 3.2.0) 以下是示例: CurrentSession.CreateCriteria<Note>() .Add(Subqueries.PropertyIn("Id", DetachedCriteria.For<SubNote>() .SetProjection(Projections.ProjectionList() .Add(Projections.Alias(

我试图通过集合属性的聚合对查询进行排序(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>();
CurrentSession.CreateCriteria()
.Add(子查询.PropertyIn(“Id”),
DetachedCriteria.For()
.SetProjection(Projections.ProjectionList()项目)
.Add(Projections.Alias(Projections.Max(“日期”),“maxDate”))
.AddOrder(Order.Desc(“maxDate”))
.List();
这不起作用,它说“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>();
var子查询=DetachedCriteria
.对于(“sn”)
.SetProjection(
Projections.Alias(Projections.Max(“日期”),“maxDate”))
.添加(限制、设备属性(“注释Id”、“n.Id”);
var results=CurrentSession.CreateCriteria(“n”)
.AddOrder(Order.Desc(Projections.SubQuery(SubQuery)))
.List();
试试这个:

var subQuery = DetachedCriteria
    .For<SubNote>("sn")
    .SetProjection(
        Projections.Alias(Projections.Max("Date"), "maxDate"))
    .Add(Restrictions.EqProperty("**sn.COLUMNNAME**", "n.Id"));

var results = CurrentSession.CreateCriteria<Note>("n")
    .Add(Subqueries.Select(subQuery))
    .SetProjection(
        Projections.Alias("n.Id", "Id"))
    .AddOrder(Order.Desc("maxDate")))
    .List<Note>();
var子查询=DetachedCriteria
.对于(“sn”)
.SetProjection(
Projections.Alias(Projections.Max(“日期”),“maxDate”))
.Add(Restrictions.EqProperty(“**sn.COLUMNNAME**”,“n.Id”));
var results=CurrentSession.CreateCriteria(“n”)
.Add(子查询.选择(子查询))
.SetProjection(
投影。别名(“n.Id”、“Id”))
.AddOrder(Order.Desc(“maxDate”))
.List();

不确定它是否100%正确,但它可能会使事情更清楚一些。确保将(**)之间的文本更改为子注释中的列名,该列名应与注释中的Id相匹配。

必须进行一些调整,但您引导我找到了正确的路径,谢谢。