gpt4 book ai didi

c# - NHibernate QueryOver 中的排序和分组

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:59 24 4
gpt4 key购买 nike

var data = session.QueryOver<Product>()
.JoinAlias(qp => qp.FieldValues, () => qfv)
.UnderlyingCriteria.SetProjection(
Projections.Group(() => qfv.Product))
.AddOrder(Order.Asc("Price"))
.List<Product>();

我得到错误:

"Price cannot appear in OrderBy clause because it is not contained in either and aggregate function or in a group by clause".

如您所见,我按“整个产品”进行分组,但我无法按照错误提示进行操作。我不能按价格分组(因为如果价格相同,产品就会丢失),我也不能做 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[]>();

或者您可以在没有任何分组依据的情况下执行此操作:(如果您只想按产品排序。价格)

var data = session.QueryOver<Product>()
.JoinAlias(qp => qp.FieldValues, () => qfv)
.OrderBy(product => product.Price).Asc
.List<Product>();

关于c# - NHibernate QueryOver 中的排序和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com