8
如何使用QueryOver API執行以下LINQ到NHibernate查詢。這將獲取數據庫中所有項目記錄的列表,並將狀態爲「已返回」的項目放置到列表末尾。狀態是映射到數據庫中的nvarchar的Enum。QueryOver API OrderBy使用案例
var workList = session.Query<Item>()
.OrderBy(i=> i.Status == Status.Returned ? 1 : 0)
.ToList();
的SQL相當於是
SELECT *
FROM Item
ORDER BY case when Status='Returned' then 1 else 0 end
我有,當然試過
var workList = session.QueryOver<Item>()
.OrderBy(i => i.Status == Status.Returned ? 1 : 0).Asc
.ToList();
,但我得到以下
InvalidOperationException異常:變量 'I' 型 'MyProject.Model.Entities.Item'從範圍「」引用,但 沒有定義
我不能在這種情況下,一些其他功能使用,因爲一個問題的LINQ。
工作很好,雖然別名在這種情況下做什麼? –
它只是讓你引用'Restrictions.Where'調用中的表格。如果你願意的話,你也可以嘗試'限制.Where- (i => i.Status == Status.Returned)',但是在那個版本中我得到了奇怪的結果。 –
正是我需要的,謝謝。 – iamserious