Я пытаюсь получить что-то похожее на SQL ниже через QueryOver:
SELECT
docs.*,
(SELECT TOP 1 eventDate from events WHERE id=docs.id
AND type=4 ORDER BY eventDate DESC) as eventDate
FROM documents as docs
WHERE doc.accountId = ...
Я близко подошел к прогнозу, но не уверен, как вернуть всю таблицу документов. Документы имеют отношение «один ко многим» с событиями, я не хочу, чтобы внешнее объединение принесло несколько результатов, а внутреннее объединение может не вернуть строку:
var query = QueryOver<Document>
.Where(d => d.Account == account)
.SelectList(list => list
.Select(d => d)
.Select(d => d.Events.OrderByDescending(e => e.EventDate).FirstOrDefault(e => e.Type == 4))
)
.List<object[]>()
.Select(d => return new DocumentSummary(d[0],d[1]) etc.);
Есть ли более простой способ выполнения подзапросов для столбцов? Я не хочу заменять это свойство, выполняющее запрос в его get
.