2012-02-28 71 views
0

我试图将一些旧代码使用功能NHibernate。订购记录数的子集

旧代码:

allOrders.OrderBy(x => x.OrdersLineItems.Count); 

如何将其转换为类似:

query.AddOrder(new Order(????, true)); 

这甚至可能吗?

在此先感谢

UPDATE: 下面是简化的代码,我试着写:

ICriteria query = FluentSessionManager.GetSession().CreateCriteria<Orders>() 
    .AddOrder(new Order(????, true)); 

连接表是OrdersLineItems。我需要的行项目的数量来设定的顺序。由于我使用的分页与拥有超过500000条记录的数据集,简单地拉动所有记录到内存中,然后对它们进行排序不会。

在此先感谢。

+0

已经回答了这里http://stackoverflow.com/a/6845746/671619和http://stackoverflow.com/a/253999/671619 – Firo 2012-02-29 13:11:13

回答

0
ICriteria query = FluentSessionManager.GetSession().CreateCriteria<Orders>() 
    .CreateAlias("this.OrderLineItems", "oli") 
    .AddOrder(new Order(Projections.Count("oli.Id"), true)); 

喜欢的东西,我应该想到。它可能并不完美,但至少说明,你需要使用Projections.Count来完成它。

+0

工程就像一个冠军。非常感谢你。 – 2012-03-06 21:32:38