Fluent NHibernate按属性分组选择计数的最大值



我想用Projections或Subquery获得一些按查询分组的计数的最大值。有可能吗?

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 |
+----------------------------------------+-------+

我需要最大的这些,但不想使用:

  • 订单desc和take
  • ListAsync之后的LINQ
  • SQL查询

你能试试这个吗?

var results = session.QueryOver<AEntity>()
.Left..JoinQueryOver(pv => pv.BEntity, () => bAlias)
.SelectList(list => list
.SelectGroup(pv => pv.Id)
.SelectCount(() => pv.Id)
)
.List<object[]>();

最新更新