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.