Не се нуждаете от SqlQuery
конструкция за извършване на подреждането преди групирането:
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
};
Това прави същото, но превежда целия израз в SQL, което има две предимства
sender
не се зарежда бавно за всяко съобщениеsender.email
не се срива, когатоsender
е null, защото в SQL няма препратка към null обект. Целият израз (sender.email
) просто връща null.