Du behöver inte SqlQuery konstruera för att göra beställningen före grupperingen:
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
};
Detta gör detsamma, men det översätter hela satsen till SQL, vilket har två fördelar
senderladdas inte lat för varje meddelandesender.emailkraschar inte närsenderär null, eftersom det inte finns någon referens för null-objekt i SQL. Hela uttrycket (sender.email) returnerar bara null.