Свободное использование NHibernate Выберите максимальное количество подсчетов, сгруппированных по свойствам - PullRequest
2 голосов
/ 14 июля 2020

Я хотел бы получить максимальное количество некоторых сгруппированных по запросу с проекциями или подзапросами. Возможно ли это?

     AEntity aAlias = null;
     BEntity bAlias = null;
     var cntQuery = await _session.QueryOver<AEntity>()
        .Left.JoinAlias(pv => pv.BEntity, () => bAlias)
        .Select(
            Projections.Group<AEntity>(e => e.Id),
            Projections.Count(Projections.Property<AEntity>(x => x.Id)))
        .ListAsync(ct);

Итак, это возвращает что-то вроде этого:

+----------------------------------------+-------+
|                   id                   | Count |
+----------------------------------------+-------+
| "af517a65-18c2-4e9f-9df6-a537cc5c9c92" |     5 |
| "48bf681d-2ccd-4df8-b0e5-b2c3f418e3d0" |     1 |
| "c0699258-9f2b-4ce6-a895-91d759cbde29" |     3 |
| "0959f6b4-b365-43fa-aede-25df327a27d1" |     2 |
+----------------------------------------+-------+

Мне нужно максимальное количество из них, но я бы не хотел использовать:

  • заказ c и
  • LINQ после ListAsync
  • SQL запрос

1 Ответ

0 голосов
/ 16 июля 2020

Можете ли вы попробовать это и посмотреть, работает ли?

var results = session.QueryOver<AEntity>()
        .Left..JoinQueryOver(pv => pv.BEntity, () => bAlias)
        .SelectList(list => list
            .SelectGroup(pv => pv.Id)
            .SelectCount(() => pv.Id)
        )
        .List<object[]>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...