Nepotřebujete SqlQuery
konstrukt pro provedení řazení před seskupením:
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
};
To dělá totéž, ale převádí celý příkaz do SQL, což má dvě výhody
sender
není líně načten pro každou zprávusender.email
nespadne, kdyžsender
je null, protože v SQL neexistuje žádný odkaz na objekt null. Celý výraz (sender.email
) vrátí pouze hodnotu null.