Nhibernate Group By и приведение результата в collectionOfObjects
public class Test
{
public string SourceSystemIdentifier { get; set; }
public int TotalTradedQuantity { get; set; }
}
//Niherbate Query
var result =
session.QueryOver<OrderEvent>()
.JoinQueryOver(oe => oe.OrderRevision, () => revisionAlias)
.JoinQueryOver(or => or.Order, () => orderAlias)
.Where(p => p.SourceSystem.Name.ToLower() == sourceSystem.ToLower())
.WhereRestrictionOn(x => x.SourceOrderIdentifier).IsIn(orderIdentifiers.ToList())
.SelectList(list => list
.SelectGroup(() => list
.Select(x => x.OrderRevision.Order.SourceOrderIdentifier))
.SelectMax(x => x.Id))
.Select(x => new Test
{
SourceSystemIdentifier = sourceIdentifierAlias,
TotalTradedQuantity = x.TotalTradedQuantity ?? 0
})
.List<Test>();
Когда я запускаю вышеуказанный запрос, я получаю следующую ошибку:
Msgstr "System.InvalidOperationException: переменная 'p' типа" Compliance.DataHub.Model.Entities.Order.Order "указана из области действия", но она не определена ".
Запрос пытается выполнить внутреннее соединение трех объектов и получить все объекты заказа, чей идентификатор заказа соответствует списку предоставленных ему заказов. Затем он создает группу на основе orderId и получает последнюю версию TradedQuantity из объекта orderEvents. LatestTradedQuantity будет TradedQuantityFrom последнего события OrderEvent. На данный момент последний orderevent может рассматриваться как тот, который имеет наибольшее значение OrderEventId.
Все, что я хочу сделать, это сохранить результат запроса в список объектов. Я хочу сгруппировать результат по SourceOrderIdentifier в качестве ключа, и для каждого ключа я хочу получить TotalTradedQuantity последнего orderEvent.
1 Заказ может иметь много OrderRevisions. 1 OrderRevision может иметь много orderEvents.
Может ли кто-нибудь помочь, пожалуйста?