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
sender
tidak malas dimuat untuk setiap pesansender.email
tidak mogok saatsender
adalah null, karena dalam SQL tidak ada referensi objek null. Seluruh ekspresi (sender.email
) baru saja mengembalikan null.