NHibernate使用过滤器选择最大值

时间:2013-04-03 14:53:14

标签: nhibernate filter max

我试图从表中获取最大值,做这样的事情:

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

所以我可以得到每个itemId列序列的最大值。

尝试使用createQuery但没有工作:

        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();

任何帮助将不胜感激。

最诚挚的问候。

1 个答案:

答案 0 :(得分:11)

使用标准语法:

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>();