我正在尝试从表中获取最大值,例如:

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


这样我就可以为每个itemId获得Sequence列的最大值。

尝试使用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();


任何帮助将不胜感激。

最好的祝福。

最佳答案

使用条件语法:

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

关于nhibernate - NHibernate使用过滤器选择最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15790749/

10-12 14:48