2012-04-04 104 views
2

我有一個模型,它包含一個DateTime字段和一個Price字段。 我想,讓我月/年的聚合列表 - 價格 所以數據:按月份和年份使用查詢的組件

  1. 15/01/2012 200
  2. 16/01/2012 200
  3. 15/02/2012 300
  4. 16/02/2012 300
  5. 15/03/2012 400
  6. 16/03/2012 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)

回答

2

QueryOver是不是一個好的選擇,因爲分組將需要使用SQL表達式來完成。對於這種類型的查詢,QueryOver只是一個毫無意義的抽象,不會增加任何值。

如果您必須使用QueryOver你可以不喜歡做的事:

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

在標準,你將不得不使用相同的投影......這就是我希望得到解決,所以你有什麼建議,如果不是QueryOver? – 2012-04-05 11:28:11

+0

可能只是使用ICriteria。或者你可以映射一個類似於這裏解釋的想法的SQL查詢:http://ayende.com/blog/3948/nhibernate-mapping-named-queries-query-and-sql-query。如果你想把魔術字符串和數據庫特定的代碼保存在一個單獨的位置,那麼後者就是要走的路。 – 2012-04-05 20:57:58