Il semble donc, mais je ne trouve pas de documentation définitive sur le sujet.Les groupes dans Linq à Sql sont-ils déjà triés par Count() décroissant?
Ce que je demande est si le résultat de cette requête:
from x
in Db.Items
join y in Db.Sales on x.Id equals y.ItemId
group x by x.Id into g
orderby g.Count() descending
select g.First()
est toujours la même que la requête suivante:
from x
in Db.Items
join y in Db.Sales on x.Id equals y.ItemId
group x by x.Id into g
select g.First()
Notez que la seconde requête permet de Linq décider de la commande du groupe, que la première requête définit comme nombre vendu, du plus au moins. Mes tests ad-hoc semblent indiquer que Linq trie automatiquement les groupes de cette façon, alors que documentation semble indiquer que l'inverse est vrai - les éléments sont retournés dans l'ordre où ils apparaissent dans le select. Je me dis que s'il est trié de cette façon, l'ajout du tri supplémentaire est inutile et gaspille des cycles, et serait mieux laissé de côté.
Avez-vous activé Sql Profiler? Est-ce qu'il ajoute en fait une commande à la fin du Select? – BFree
Non. Bon putain de point. Si vous l'avez fait et posté les résultats dans une réponse, je l'accepterais. – Will