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
sender
laddas inte lat för varje meddelandesender.email
kraschar 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.