gpt4 book ai didi

nhibernate - NHibernate。按功能排序

转载 作者:行者123 更新时间:2023-12-04 13:29:00 31 4
gpt4 key购买 nike

我需要NHibernate来执行这样的查询:

SELECT * 
FROM Users
ORDER BY Func(FirstName, LastName)

Standart NHibernate Order类不允许执行此操作。还有其他办法吗?
事实是,命名查询和HQL不适合作为解决方案。

编辑:我发现,可以在SQL上执行:
SELECT *, Func(FirstName, LastName) AS FullName 
FROM Users
ORDER BY FullName

因此,像本例中一样,也许可以向标准中添加额外的字段(或者可以是投影)?

最佳答案

首先,您无需创建“全名”即可按两列进行排序。您可以这样做:

SELECT * 
FROM Users
ORDER BY FirstName, LastName

-编辑

或者,如果您想定义顺序,则可以在每列之后添加“asc/desc”:
SELECT * 
FROM Users
ORDER BY FirstName DESC, LastName ASC

-结束编辑

至于在NHibernate中进行订购,如果您使用的是QueryOver,则可以执行以下操作:
var result = Session.QueryOver<Users>()
.OrderBy(x => x.FirstName).Desc
.ThenBy(x => x.LastName).Desc
.List();

至于条件,我认为(不是100%肯定)可以做到:
var result = Session.CreateCriteria(typeof(Users))
.AddOrder(Order.Desc("FirstName"))
.AddOrder(Order.Desc("LastName"))
.List<Users>();

关于nhibernate - NHibernate。按功能排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622930/

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