2013-04-03 82 views
2

我想從表中獲取最大價值,做這樣的事情:NHibernate的選擇最大值與過濾

 SELECT max(re.Sequence) FROM MyTable re WHERE re.ItemId = :itemId 

這樣我就可以得到每個項目Id的列序列的最大值。

試圖用的createQuery但didn't工作:

 string hql = @"SELECT new Int32(max(re.Sequence) FROM MyTable re WHERE re.Item.Id = :itemId"; 
     List<Int32> lista = session 
      .CreateQuery(hql) 
      .SetParameter("itemId", idItem) 
      .List<Int32>() 
      .ToList(); 

任何幫助將不勝感激。

最好的問候。

回答

10

使用標準語法:

var criteria = session.CreateCriteria<MyTable>(); 
criteria.Add(Restrictions.Eq("ItemId", itemId)); 
criteria.SetProjection(Projections.Max("Sequence")); 
var max = criteria.UniqueResult<int>(); 

使用過的語法查詢:

var max = session.QueryOver<MyTable>().Where(x => x.ItemId.Equals(itemId)).Select(
       Projections.Max<MyTable>(x => x.Sequence)).SingleOrDefault<int>(); 
+0

完美的,工作的,我只是糾正了2號線到「限制」和第3行「SetProjection」 。謝謝你的幫助!!! – graffitiMSX