Итак, это моя проблема с NHibernate.NHibernate: Результаты поиска по коллекции ID
У меня есть набор идентификаторов, который изменяется динамически, поэтому я не могу жестко задавать значения. Используя эти идентификаторы, мне нужно заказать запрос с этими идентификаторами.
Набор идентификаторов (типа «длинный») на заказ с (это динамически изменяется):
{8, 6, 23, 3, 7, 1, 9}
Say из них, я получаю следующие результаты от моего запроса (так как он будет иметь другое WHERE положения) :
{6, 7, 23, 8, 1}
Наконец, эти результаты должны быть упорядочены с помощью набора идентификаторов, указанных в начале так, чтобы выглядеть примерно так:
{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. Все делается с помощью лямбда-выражений. Я использую NHibernate v3.3.0.4000, .NET 4.0 (C#) и MySQL Server v5.5.16.
Спасибо.