我试图从表中获取最大值,做这样的事情:
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();
任何帮助将不胜感激。
最诚挚的问候。
答案 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>();