NHibernate – Как использовать проект суммы для постраничных результатовC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 NHibernate – Как использовать проект суммы для постраничных результатов

Сообщение Anonymous »

Я пытаюсь использовать разбиение на страницы в сочетании с проекцией суммы, чтобы получить сумму значений в столбце только для интересующей меня страницы результатов. Я использую .NET, C# и NHibernate 3.1< /p>

У меня есть ICriteria для начала, который связан со всеми строками из связанной таблицы базы данных.

I' затем делаю следующее, чтобы получить версию с первой страницей (скажем, 10 элементов из 40):

Код: Выделить всё

ICriteria recordsCriteria = CriteriaTransformer.Clone(criteria);
recordsCriteria.SetFirstResult(0);
recordsCriteria.SetMaxResults(10);
Я использую этот ICriteria для чего-то другого, поэтому создаю еще два клона:

Код: Выделить всё

ICriteria totalAggCriteria = CriteriaTransformer.Clone(criteria);
ICriteria pageAggCriteria = CriteriaTransformer.Clone(recordsCriteria);
Если я загляну внутрь этих двух новых, в первой будет 40 элементов, а во второй — 10 — именно то, что мне нужно.

Предположим, объекты, возвращающиеся из БД, имеют столбец с именем «ColA» и тип Int32.

Из этого , мне нужна сумма всех 40 значений ColA и сумма первых 10 значений ColA.

Чтобы получить сумму всех 40 значений ColA, я делаю следующее:

Код: Выделить всё

totalAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum("ColA"));
var totalSum = totalAggCriteria.UniqueResult();
Значение в TotalSum правильное.

Чтобы получить сумму первых 10 значений ColA, я Я пробую следующее:

Код: Выделить всё

pageAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum("ColA"));
vat pageSum = pageAddCriteria.UniqueResult();
Однако это дает мне то же значение, что и предыдущее — для всех 40 значений ColA.

Я Я также пробовал следующее, но результат тот же:

Код: Выделить всё

pageAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum(column));
pageAggCriteria.SetFirstResult(firstResult.Value);
pageAggCriteria.SetMaxResults(pageSize.Value);
pageSum = pageAggCriteria.UniqueResult();
А также:

Код: Выделить всё

pageAggCriteria.SetFirstResult(firstResult.Value);
pageAggCriteria.SetMaxResults(pageSize.Value);
pageAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum(column));
pageSum = pageAggCriteria.UniqueResult();
Может ли кто-нибудь подсказать, где я ошибаюсь и как мне на самом деле получить сумму значений ColA в первых 10 результатах?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/823 ... ed-results
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»