SqlQuery
は必要ありません グループ化の前に順序付けを行うように構成します:
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
};
これは同じことを行いますが、ステートメント全体をSQLに変換します。これには、2つの利点があります
sender
メッセージごとに遅延ロードされません-
sender.email
sender
のときにクラッシュしません SQLにはnullオブジェクト参照がないため、はnullです。式全体(sender.email
)nullを返すだけです。