我想转换结果的查询到IDictionary的铸造NHibernate的结果转换成IDictionary的<string,int>
这里字符串将包含订单ID和INT将包含TradedQuantity
下面的查询应加入三个对象秩序, OrderRevision和OrderEvent。 1订单可以有很多orderRevisions 1 OrderRevision可以有很多orderEvents
什么查询试图做的是内部连接三个对象,并得到所有的订单对象,它们的订单ID提供给它orderids的列表匹配。然后它根据orderId完成一个组,并从orderEvents对象获取最新的TradedQuantity。 LatestTradedQuantity将是TradedQuantityFrom最新的OrderEvent。现在可以将最新的orderevent视为OrderEventId值最高的那个。
OrderRevision revisionAlias = null;
Order orderAlias = null;
var query =
Session.QueryOver<OrderEvent>()
.JoinAlias(oe => oe.OrderRevision,() => revisionAlias)
.JoinAlias(oe => oe.OrderRevision.Order,() => orderAlias)
.Where(x => x.OrderRevision.Order.SourceSystem.Name.ToLower() == sourceSystem.ToLower())
.WhereRestrictionOn(x => x.OrderRevision.Order.Id).IsIn(orderIds.ToList())
.SelectList(list => list.SelectGroup(x => x.OrderRevision.Order.SourceOrderIdentifier)
.SelectMax(x => x.Id).Select(x => x.TradedQuantity))
.Select(x => new KeyValuePair<string, int?>(x.OrderRevision.Order.SourceOrderIdentifier, x.TradedQuantity)
);
由于此查询不做什么应该。你能帮忙,让我知道如何将结果投入到IDictionary中吗?
谢谢你的回答。一旦我尝试并测试它,我会回到你身边。 – Sike12
谢谢你弗雷德里克 – Sike12