c# - 使用 queryover 按月和年部分进行分组

标签 c# nhibernate group-by queryover

我有一个模型,其中包含日期时间字段和价格字段。 我想要一个列表,其中包含月/年的汇总 - 价格 所以对于数据:

  1. 2012年1月15日200
  2. 2012年1月16日200
  3. 2012年2月15日300
  4. 2012年2月16日 300
  5. 2012年3月15日400
  6. 2012年3月16日400

我会得到:

  1. 01/2012 400
  2. 02/2012 600
  3. 03/2012 800

到目前为止,我还没有找到使用 QueryOver 实现此目的的方法。 当我尝试查看日期的月/年部分时,我不断收到“无法解析属性”的消息。

这些问题:

Group posts by year, then by month

Group/Sort by Date Year/Month, Partial Select with NHibernate (Projection? Transformation?)

使用 LINQ 得到答案 - 不是我正在寻找的。

有什么想法吗? 谢谢

(使用 NHibernate 3.2)

最佳答案

QueryOver 不是一个好的选择,因为分组需要使用 SQL 表达式来完成。对于这种类型的查询,QueryOver 只是一个毫无意义的抽象,不会增加任何值(value)。

如果您必须使用 QueryOver 来执行此操作,您可以执行以下操作:

session.QueryOver<...>()
   .SelectList(list => list
      .Select(GroupProperty(Projections.SqlProjection(...)))
      .SelectSum(x => x.Price)
   );

关于c# - 使用 queryover 按月和年部分进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10015732/

相关文章:

c# - 我如何处理 .NET 中的协商?

C# 使用 .txt 处理数组

nhibernate - NHibernate 映射文件中的 hbm 代表什么?

mysql - 使用 group by 和 order by 时获得最低值

c# - HttpWebRequest - 启用假 Javascript

C# Concurent 字典 - 锁定值

xml - 使用 xml 文件的文件夹作为 nhibernate 的数据源

database - Consolidating NHibernate open sessions to the DB (耦合 NHibernate 和 DB session )

android - GreenDAO groupby 子句

python - 使用 groupby 获取组中具有最大值的行