QueryOver API を使用して、次の LINQ to NHibernate クエリを実行するにはどうすればよいですか。これにより、DB から Item のすべてのレコードのリストが取得され、ステータスが「Returned」の Item がリストの最後に配置されます。ステータスは、データベース内の nvarchar にマップされる Enum です。
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: タイプ 'MyProject.Model.Entities.Item' の変数 'i' がスコープ '' から参照されていますが、定義されていません
この場合、他の機能に問題があるため、LINQ を使用できません。