Wie kann ich die folgende LINQ to NHibernate Abfrage mit der QueryOver API durchführen. Dies ruft eine Liste aller Datensätze von Artikel aus der DB ab und platziert Artikel mit dem Status "Zurückgegeben" an das Ende der Liste. Der Status ist eine Enum, die einem Nvarchar in der Datenbank zugeordnet ist.QueryOver API OrderBy mit Case
var workList = session.Query<Item>()
.OrderBy(i=> i.Status == Status.Returned ? 1 : 0)
.ToList();
Die SQL-Äquivalent ist
SELECT *
FROM Item
ORDER BY case when Status='Returned' then 1 else 0 end
ich natürlich habe
versuchtvar workList = session.QueryOver<Item>()
.OrderBy(i => i.Status == Status.Returned ? 1 : 0).Asc
.ToList();
aber ich bekomme die folgende
InvalidOperationException: Variable 'i' vom Typ 'MyProject.Model.Entities.Item' mit Bezug auf den Anwendungsbereich ‚‘, aber es ist nicht
Ich kann nicht LINQ verwenden, da ein Problem mit einigen anderen Funktionen in diesem Fall definiert.
Funktioniert gut, aber was macht die Alias in diesem Fall? –
Sie können nur die Tabelle innerhalb des Aufrufs "Restrictions.Where" referenzieren. Sie könnten auch 'Restrictions.Where- (i => i.Status == Status.Returned)' versuchen, wenn Sie bevorzugen, aber ich hatte seltsame Ergebnisse mit dieser Version. –
Genau das, was ich brauchte, danke. – iamserious