Vous n'avez pas besoin de SqlQuery
construire pour faire le tri avant le regroupement :
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
};
Cela fait la même chose, mais cela traduit toute l'instruction en SQL, ce qui présente deux avantages
sender
n'est pas chargé paresseusement pour chaque messagesender.email
ne plante pas lorsquesender
est null, car dans SQL il n'y a pas de référence d'objet null. L'expression entière (sender.email
) renvoie simplement null.