0
私は2つの異なるテーブルでクエリを実行しています。 最初のクエリでは、私は別のテーブルをチェックインする必要があるいくつかのIDを取得します。 次に、2番目のクエリの結果で最初のクエリを再度実行します。複数のnhibernateクエリーオーバーを簡略化
これは、これを行う最善の方法ではありません。
しかし、私はそれを解決する良い方法を見つけていません。だから、いくつかの助けに感謝します。
IntOrderInvoiceCostOut y = null;
var list = session.QueryOver<IntOrderInvoiceCostOut>(() => y)
.Where(x => x.IntegrationHandleDate == null)
.Select(Projections.Distinct(Projections.Property(() => y.Externalid)))
.List<string>();
var nonPreliminaryOrders = session.QueryOver<RefImplOrderEntity>()
.WhereRestrictionOn(x => x.ExternalId).IsIn(list.ToList())
.Where(x => x.StatusTypeId != 95)
.Select(x => x.ExternalId)
.List<string>();
var finalList = session.QueryOver<IntOrderInvoiceCostOut>()
.WhereRestrictionOn(x => x.Externalid).IsIn(nonPreliminaryOrders.ToList())
.Where(x => x.IntegrationHandleDate == null)
.OrderBy(x => x.IntegrationCreateDate)
.Asc
.List();
コードは動作しますが、実際は醜いです。
私は私の頭の上をオフに思い出すことはできませんが、これを行うにサブクエリを使用することができるはずです。 http://www.andrewwhitaker.com/blog/2014/10/24/queryover-series-part-8-working-with-subqueries/ –
Linqを使用できますか? –