Sie benötigen die SqlQuery
nicht Konstrukt, um die Reihenfolge vor der Gruppierung durchzuführen:
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
};
Das macht dasselbe, aber es übersetzt die ganze Anweisung in SQL, was zwei Vorteile hat
sender
wird nicht für jede Nachricht verzögert geladensender.email
stürzt nicht ab, wennsender
ist null, da es in SQL keine Nullobjektreferenz gibt. Der gesamte Ausdruck (sender.email
) gibt einfach null zurück.