No, perché sono compilati nello esattamente lo stesso codice.
Fondamentalmente le espressioni di query sono "preelaborate" dal compilatore in "C# 3 senza espressioni di query" e quindi le regole di sovraccarico, traduzione di espressioni lambda ecc. Vengono applicate normalmente. È un sistema davvero elegante, il che significa che le regole per le espressioni di query sono limitate a un solo piccolo bit della specifica.
Naturalmente, ci sono varie cose che puoi scrivere nella sintassi del "metodo concatenato" che non può essere scritta nella sintassi delle espressioni di query, a causa dell'uso di altri sovraccarichi o dei metodi semplicemente non supportati (es. Count()
) - ma a meno che tu non stia usando quelli, il codice compilato sarà esattamente lo stesso. Scegli l'alternativa più leggibile per qualsiasi scenario particolare.
fonte
2010-09-23 08:33:14
Più correttamente è "espressione di comprensione" e "interfaccia fluente" (nel primo caso perché la sintassi della query C# non è legata a LINQ e nel secondo perché è in genere che viene chiamato il concatenamento del metodo). – Richard