¿Cómo puedo realizar el siguiente LINQ a la consulta NHibernate utilizando la API QueryOver. Esto obtiene una lista de todos los registros de elementos del DB y coloca los artículos con el estado "Devuelto" al final de la lista. El estado es un Enum que está mapeado a un nvarchar en la base de datos.Pedido API QueryOver utilizando el caso
var workList = session.Query<Item>()
.OrderBy(i=> i.Status == Status.Returned ? 1 : 0)
.ToList();
El SQL es equivalente
SELECT *
FROM Item
ORDER BY case when Status='Returned' then 1 else 0 end
he intentado por supuesto
var workList = session.QueryOver<Item>()
.OrderBy(i => i.Status == Status.Returned ? 1 : 0).Asc
.ToList();
pero me sale el siguiente
InvalidOperationException: la variable 'i' de tipo 'MyProject.Model.Entities.Item' referenciado desde alcance '', pero se no define
no puedo utilizar LINQ debido a un problema con alguna otra funcionalidad en este caso.
Funciona bien aunque, ¿qué hace el alias en este caso? –
Simplemente le permite hacer referencia a la tabla dentro de la llamada 'Restrictions.Where'. También puede probar 'Restrictions.Where- (i => i.Status == Status.Returned)' si lo prefiere, pero he tenido resultados extraños con esa versión. –
Exactamente lo que necesitaba, gracias. – iamserious