Jak wykonać następujące kwerendy LINQ do NHibernate za pomocą interfejsu API QueryOver. Otrzymuje to listę wszystkich rekordów pozycji z bazy danych i umieszcza elementy o statusie "zwrócone" na końcu listy. Status jest Enum, który jest mapowany do nvarchar w bazie danych.Zamówienie QueryOver API za pomocą Case
var workList = session.Query<Item>()
.OrderBy(i=> i.Status == Status.Returned ? 1 : 0)
.ToList();
Odpowiednik SQL jest
SELECT *
FROM Item
ORDER BY case when Status='Returned' then 1 else 0 end
mam oczywiście próbowano
var workList = session.QueryOver<Item>()
.OrderBy(i => i.Status == Status.Returned ? 1 : 0).Asc
.ToList();
Ale pojawia się następujący
InvalidOperationException: zmienna 'i' typu "MyProject.Model.Entities.Item" odniesienia z zakresu ", ale nie jest zdefiniowane
Nie mogę używać LINQ z powodu problemu z inną funkcją w tym przypadku.
Działa świetnie, ale co robi Alias w tym przypadku? –
Po prostu umożliwia odwoływanie się do tabeli wewnątrz wywołania "Ograniczenia.". Możesz również wypróbować "Ograniczenia. Gdzie- (i => i.Status == Status.Returned)' jeśli wolisz, ale miałem dziwne wyniki w tej wersji. –
Dokładnie to, czego potrzebowałem, dzięki. – iamserious