【发布时间】:2024-01-14 09:23:01
【问题描述】:
好的,这是我使用 NHibernate 的问题。
我有一组动态变化的 ID,因此我无法对这些值进行硬编码。使用这些 ID,我需要使用这些 ID 订购查询。
要订购的 ID 集(类型“长”)(这些会动态变化):
{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。
谢谢。
【问题讨论】:
标签: mysql hibernate nhibernate case