Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Abonnements

Comment effectuer plusieurs fonctions de grouping en une seule requête LINQ ?

Derrière la magie d’Entity Framework se cache la réalité du SQL. Je persiste et je signe, si vous ne connaissez pas le SQL, il sera très compliqué d’écrire des requêtes L2E optimales.

J’ai trouvé une bonne illustrations avec les fonctions de grouping.

Comment récupérer la dernière date de commande et le nombre de commandes ?

En SQL, on peut écrire la requête suivante :

SELECT COUNT(1), MAX(OrderDate)

FROM Orders

Mais comment faire la même chose en LINQ ?

Bien sûr, on pourrait utiliser deux requêtes mais il y a un point très important à prendre en compte avant de faire ça : la performance. En effet, le coût pour récupérer le count ou le max ou le count et le max est le même :

image_thumb[1]

Cela signifie que, même en ignorant le coût des deux connections à la base, avoir deux requêtes pour récupérer le nombre de commande et la date de la dernière commande est deux fois plus important que de récupérer ces informations en une seule requête !

Si l’on pense SQL, la fonction COUNT et MAX sont des fonctions de grouping.

On obtient le même plan d’exécution en utilisant un group by sur une constante :

SELECT COUNT(1), MAX(OrderDate)

FROM

(

SELECT OrderDate, 1 AS G

FROM Orders

) O

GROUP BY O.G

image_thumb[7]

Et ça on peut l’écrire en LINQ :

from o in context.Orders
group o by 1 into g
select new { Count = g.Count(), MaxOrderDate = g.Max(o => o.OrderDate) };
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié mardi 14 juin 2011 21:53 par Matthieu MEZIL

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01