41 votes

Syntaxe de requête LINQ .NET et chaîne de méthodes

Y a-t-il une différence de performance entre les deux déclarations suivantes ?

from item in collection 
where item.id == 3
select item

y

collection.Where(item => item.id ==3)

En général, y a-t-il une différence de performance entre la syntaxe LINQ et la chaîne de méthodes ?

55voto

Jon Skeet Points 692016

Non, car ils sont compilés dans exactement le même code.

En fait, les expressions de requête sont "prétraitées" par le compilateur en "C# 3 sans expressions de requête", puis les règles de surcharge, de traduction des expressions lambda, etc. sont appliquées normalement. Il s'agit d'un système très élégant qui signifie que les règles relatives aux expressions de requêtes sont limitées à une petite partie de la spécification.

Bien sûr, il y a plusieurs choses que vous pouvez écrire dans la syntaxe des "méthodes enchaînées" qui ne peuvent pas être écrites dans la syntaxe des expressions de requête, soit parce que vous utilisez d'autres surcharges, soit parce que les méthodes ne sont tout simplement pas prises en charge (par ex. Count() ) - mais à moins que vous ne les utilisiez, le code compilé sera exactement le même. Choisissez l'alternative la plus lisible pour tout scénario particulier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X