Anda tidak memerlukan SqlQuery konstruksi untuk melakukan pemesanan sebelum pengelompokan:
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
};
Ini melakukan hal yang sama, tetapi menerjemahkan seluruh pernyataan ke dalam SQL, yang memiliki dua keunggulan
sendertidak malas dimuat untuk setiap pesansender.emailtidak mogok saatsenderadalah null, karena dalam SQL tidak ada referensi objek null. Seluruh ekspresi (sender.email) baru saja mengembalikan null.