Come è possibile eseguire la seguente query LINQ su NHibernate utilizzando l'API QueryOver. Ciò ottiene un elenco di tutti i record di Item dal DB e posiziona gli articoli con lo stato "Restituito" alla fine dell'elenco. Lo stato è un Enum che viene mappato su un nvarchar nel database.Ordine API QueryOver utilizzando la custodia
var workList = session.Query<Item>()
.OrderBy(i=> i.Status == Status.Returned ? 1 : 0)
.ToList();
L'equivalente SQL è
SELECT *
FROM Item
ORDER BY case when Status='Returned' then 1 else 0 end
ho naturalmente provato
var workList = session.QueryOver<Item>()
.OrderBy(i => i.Status == Status.Returned ? 1 : 0).Asc
.ToList();
ma ottengo il seguente
InvalidOperationException: variabile 'i' di tipo 'MyProject.Model.Entities.Item' riferimento dal campo di applicazione '', ma è non definito
non posso usare LINQ causa di un problema con qualche altra funzionalità in questo caso.
Funziona benissimo anche se cosa fa l'alias in questo caso? –
Permette solo di fare riferimento alla tabella all'interno della chiamata 'Restrictions.Where'. Potresti anche provare a 'Restrictions.Where- (i => i.Status == Status.Returned)' se preferisci, ma ho avuto risultati strani con quella versione. –
Esattamente quello di cui avevo bisogno, grazie. – iamserious