Pau*_*usu 2 c# database nhibernate
var data = session.QueryOver<Product>()
.JoinAlias(qp => qp.FieldValues, () => qfv)
.UnderlyingCriteria.SetProjection(
Projections.Group(() => qfv.Product))
.AddOrder(Order.Asc("Price"))
.List<Product>();
Run Code Online (Sandbox Code Playgroud)
我收到错误:
"价格不能出现在OrderBy子句中,因为它既不包含在聚合函数中,也不包含在group by子句中".
如你所见,我按"整个产品"分组,我不能做错误所说的.我不能按价格分组(因为如果它们的价格相同,产品会丢失)而且由于消除某些产品的原因,我不能做MIN,MAX(价格).我该怎么办呢?
Diego是对的,group by Product是Product.Id的一个组.如果您按Product.Price分组,您将不会错过任何产品,因为您已按Product.Id对其进行分组.
你可以做到这一点,但不要忘记你只有Product.Id和Product.Price:
var data = session.QueryOver<Product>()
.JoinAlias(qp => qp.FieldValues, () => qfv)
.SelectList(list => list
.SelectGroup(product => product.Id)
.SelectGroup(product => product.Price))
.OrderBy(product => product.Price).Asc
.List<object[]>();
Run Code Online (Sandbox Code Playgroud)
或者您可以通过以下方式执行此操作:(如果您只想按产品排序.价格)
var data = session.QueryOver<Product>()
.JoinAlias(qp => qp.FieldValues, () => qfv)
.OrderBy(product => product.Price).Asc
.List<Product>();
Run Code Online (Sandbox Code Playgroud)