Non hai bisogno di SqlQuery
build per eseguire l'ordine prima del raggruppamento:
var refGroupQuery = from m in dbContext.Messages
group m by m.receiver_id into refGroup
let firstItem = refGroup.OrderByDescending(x => x.created_at)
.FirstOrDefault()
select new MessageDTO {
id = firstItem.id,
content = firstItem.content,
sender_email = firstItem.sender.email
};
Questo fa lo stesso, ma traduce l'intera istruzione in SQL, che ha due vantaggi
sender
non è caricato pigro per ogni messaggiosender.email
non si arresta in modo anomalo quandosender
è null, perché in SQL non è presente alcun riferimento a oggetti null. L'intera espressione (sender.email
) restituisce solo null.