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
sendernon è caricato pigro per ogni messaggiosender.emailnon 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.