2014-03-28 34 views
0

我正在使用NHibernate,我需要計算從組返回的行數。NHibernate計數組數

重要的是要提到,我至少在group by語句中有兩列。因爲我有不同的數據庫,所以我想避免使用直接的SQL。我真的很想發送帶有MultiQuery或MultiCriteria的命令,因爲我有很多統計信息,我希望一次收集所有數據(儘管不是必需的)。我也想避免返回由Group By創建的列表,因爲它可能非常大。我試過多種方法(HQL,QueryOver,Criteria)。不幸的是,似乎沒有任何工作。

我有這樣的形象表: http://i.imgur.com/4HreWWD.png

enter image description here

我期望的查詢會是這個樣子

SELECT count(*) FROM (SELECT * FROM Table t WHERE t.A = 1 GROUP BY t.B, t.C) 

這種特殊的查詢將返回3

+0

你發佈的SQL將不會運行(你不能在內部查詢中選擇't.A',因爲它不是'group by'子句的一部分) –

回答

0

使用Linq你可以嘗試這樣的事情:

var result = from t in Table // <-- session.Query<Table>() to get queryable 
      where t.A == 1 
      group t by new { t.B, T.C } into g 
      select g.Count(); 

請記住在您的cs文件中添加命名空間NHibernate.Linq