Bạn không cần SqlQuery xây dựng để thực hiện thứ tự trước khi nhó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
};
Điều này cũng thực hiện tương tự, nhưng nó dịch toàn bộ câu lệnh sang SQL, điều này có hai ưu điểm
-
senderkhông được tải chậm cho mỗi tin nhắn -
sender.emailkhông bị lỗi khisenderlà null, bởi vì trong SQL không có tham chiếu đối tượng null. Toàn bộ biểu thức (sender.email) chỉ trả về null.