gpt4 book ai didi

nhibernate - QueryOver API OrderBy 使用案例

转载 作者:行者123 更新时间:2023-12-02 22:53:10 24 4
gpt4 key购买 nike

如何使用 QueryOver API 执行以下 LINQ to NHibernate 查询。这会从数据库中获取 Item 的所有记录的列表,并将状态为“Returned”的 Item 放置到列表的末尾。状态是一个枚举,映射到数据库中的 nvarchar。

var workList = session.Query<Item>()
.OrderBy(i=> i.Status == Status.Returned ? 1 : 0)
.ToList();

等效的 SQL 是

SELECT *
FROM Item
ORDER BY case when Status='Returned' then 1 else 0 end

我当然尝试过

var workList = session.QueryOver<Item>()
.OrderBy(i => i.Status == Status.Returned ? 1 : 0).Asc
.ToList();

但我得到以下内容

InvalidOperationException: variable 'i' of type 'MyProject.Model.Entities.Item' referenced from scope '', but it is not defined

由于本例中其他一些功能存在问题,我无法使用 LINQ。

最佳答案

您应该在这里使用 Projections.Conditional 来代替:

Item itemAlias = null;

var workList =
session.QueryOver<Item>(() => itemAlias)
.OrderBy(Projections.Conditional(
Restrictions.Where(() => itemAlias.Status == Status.Returned),
Projections.Constant(1),
Projections.Constant(0))).Asc
.List();

这有点冗长,但应该可以完成工作。

关于nhibernate - QueryOver API OrderBy 使用案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12428159/

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