首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用criteria api在nhibernate中按范围分组

如何使用criteria api在nhibernate中按范围分组
EN

Stack Overflow用户
提问于 2011-02-01 19:55:00
回答 1查看 374关注 0票数 1

我有想要在Criteria api中编写的sql:

代码语言:javascript
复制
SELECT CASE 
WHEN total_pages = 0 THEN '0 pages'
WHEN total_pages BETWEEN 1 AND 3 THEN '1-3 pages'
WHEN total_pages BETWEEN 4 AND 6 THEN '4-6 pages'
WHEN total_pages > 6 THEN '7 + pages'
END AS pagerange, sum(total_pages) AS 'Total'
FROM dbo.connector_log_entry
GROUP BY 
CASE 
WHEN total_pages = 0 THEN '0 pages'
WHEN total_pages BETWEEN 1 AND 3 THEN '1-3 pages'
WHEN total_pages BETWEEN 4 AND 6 THEN '4-6 pages'
WHEN total_pages > 6 THEN '7 + pages'
END
ORDER BY pagerange
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-01 21:39:00

代码语言:javascript
复制
var groupBy = @"
    CASE
      WHEN total_pages = 0 THEN '0 pages'
      WHEN total_pages BETWEEN 1 AND 3 THEN '1-3 pages'
      WHEN total_pages BETWEEN 4 AND 6 THEN '4-6 pages'
      WHEN total_pages > 6 THEN '7 + pages'
    END";
var pagerange = Projections.SqlGroupProjection(groupBy + " pagerange",
                                               groupBy,
                                               new[] { "pagerange" },
                                               new[] { NHibernateUtil.String });
var results = session.CreateCriteria<ConnectorLogEntry>()
                     .SetProjection(pagerange,
                                    Projections.Sum("TotalPages"))
                     .List();

这里假设您的类名为ConnectorLogEntry,映射到total_pages列的属性名为TotalPages

我欠你一个比特的订单,但你总是可以在客户端排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4862203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档