8
QueryOver APIを使用して、次のLINQ to NHibernateクエリを実行する方法を教えてください。これは、DBからItemのすべてのレコードのリストを取得し、ステータスが "Returned"のItemをリストの最後に置きます。ステータスは、データベース内のnvarcharにマップされる列挙型です。私はもちろんしましQueryOver API OrderBy with Case
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'呼び出しの中でテーブルを参照することができます。もしあなたが好きであれば 'Restrictions.Where- (i => i.Status == Status.Returned)'を試してみることもできますが、そのバージョンでは奇妙な結果が出ました。 –
まさに私が必要としていた、感謝します。 – iamserious