使用Castle ActiveRecord从表中查找前10个结果

时间:2009-04-23 15:26:14

标签: c# nhibernate activerecord castle-activerecord

我正试图为我的应用程序的用户说出前10名的分数。我通常会使用类似

的内容
User.SlicedFindAll(0, 10, 
NHibernate.Expression.Expression.Eq("IsActive", true), 
NHibernate.Expression.Order.Desc("Score")

通常用于分页目的。但是,我不想在我的请求中添加任何约束(WHERE子句)。因此,我试着按照

的方式尝试
User.SlicedFindAll(0, 10, 
null, 
NHibernate.Expression.Order.Desc("Score")

但是会抛出NullReferenceException。有什么指针吗? (我猜SlicedFindAll不是一个好选择)

谷歌对此没有帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用此重载:

public static T[] SlicedFindAll(int firstResult, int maxResults, NHibernate.Expression.Order[] orders, params NHibernate.Expression.ICriterion[] criteria)
在你的情况下,它将是:

User.SlicedFindAll(0, 10, new[] {Order.Desc("Score")})

答案 1 :(得分:0)

我更喜欢LINQ:

ActiveRecordLinq.AsQueryable<User>().Take(10)

它应该完全评估为......

select top 10 * from User