Найдите 10 лучших результатов из таблицы, используя Castle ActiveRecord - PullRequest
2 голосов
/ 23 апреля 2009

Я пытаюсь получить, скажем, 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 не очень хороший выбор)

Google не помог в этом.

Ответы [ 2 ]

3 голосов
/ 23 апреля 2009

Вы можете использовать эту перегрузку:

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")})
0 голосов
/ 24 мая 2016

Я предпочитаю LINQ:

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

Это должно отлично оценить, как

select top 10 * from User
...