gpt4 book ai didi

mysql - NHibernate:按 ID 集合排序结果

转载 作者:行者123 更新时间:2023-11-30 23:30:00 26 4
gpt4 key购买 nike

好的,这是我的 NHibernate 问题。

我有一组动态变化的 ID,所以我无法对这些值进行硬编码。使用这些 ID,我需要使用这些 ID 订购查询。

用于订购的一组 ID(类型为“long”)(这些动态变化):

{8, 6, 23, 3, 7, 1, 9}

从这些说起,我从查询中得到以下结果(因为它会有其他 WHERE 子句):

{6, 7, 23, 8, 1}

最后,应使用开头指定的一组 ID 对这些结果进行排序,以便看起来像这样:

{8, 6, 23, 7, 1}

我不能在内存中执行此操作的原因是因为查询也有一个 .take() 值(例如 10 行),因此必须在限制结果集之前在查询中完成排序,否则我可能会得到数据丢失。

在 MySQL 中,这样的查询等效于:

ORDER BY CASE ID
WHEN 8 THEN 1
WHEN 6 THEN 2
WHEN 23 THEN 3
WHEN 3 THEN 4
WHEN 7 THEN 5
WHEN 1 THEN 6
WHEN 9 THEN 7
ELSE 8

请务必注意,我无法使用 HQL 或 LINQ。一切都是使用 Lambda 表达式完成的。我正在使用 NHibernate v3.3.0.4000、.NET 4.0 (C#) 和 MySQL Server v5.5.16。

谢谢。

最佳答案

作为起点,您可以在 QueryOver/Criteria 上添加订单作为投影,这可以是有条件的

session.QueryOver<SomeClass>()
.Where(lambdaExpression)
.OrderBy(Projections.Conditional(...))

关于mysql - NHibernate:按 ID 集合排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11224208/

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