Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir le dernier enregistrement pour chaque groupe à l'aide d'Entity Framework et de MySQL, y compris l'entité associée

Vous n'avez pas besoin de SqlQuery construire pour faire le tri avant le regroupement :

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
                           };

Cela fait la même chose, mais cela traduit toute l'instruction en SQL, ce qui présente deux avantages

  • sender n'est pas chargé paresseusement pour chaque message
  • sender.email ne plante pas lorsque sender est null, car dans SQL il n'y a pas de référence d'objet null. L'expression entière (sender.email ) renvoie simplement null.