我正试图为我的应用程序的用户说出前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不是一个好选择)
谷歌对此没有帮助。
答案 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