No, porque están compilados en exactamente el mismo código.
Básicamente las expresiones de consulta son "pre-procesadas" por el compilador en "C# 3 sin expresiones de consulta" y luego las reglas de sobrecarga, traducción de expresiones lambda, etc. se aplican de forma normal. Es un sistema realmente elegante, lo que significa que las reglas para las expresiones de consulta están limitadas a solo un pequeño fragmento de la especificación.
Por supuesto, hay varias cosas que puede escribir en la sintaxis de "método encadenado" que no se puede escribir en la sintaxis de la expresión de consulta, ya sea porque usa otras sobrecargas o porque simplemente no se admite (por ejemplo, Count()
), pero a menos que los uses, el código compilado será exactamente el mismo. Elija la alternativa más legible para cualquier escenario en particular.
Más correctamente es "expresión de comprensión", y "interfaz fluida" (en el primer caso porque la sintaxis de consulta C# no está vinculada a LINQ, y en este último porque generalmente se llama el método de encadenamiento). – Richard